2017-08-03 32 views
1

采取以下代码:功能ReactJS - 传递数据/参数为Callback

const Search = props => { 
    return (
     <div id="search"> 
      <h2>Live Search</h2> 
      <input type="text" onChange={ props.onInput } /> 
     </div> 
    ) 
} 

export default Search 

是否有可能将参数传递给props.onInput(具体的<input>value属性)。我知道我可以创建这个类作为类,并创建一个处理程序,将数据传递到props.onInput,但我只是想知道是否有可能以功能的方式做到这一点。

+0

你的onChange函数将接收的事件,则可以从事件采取的值:'<搜索onInput = {({目标:{值}})=> {的console.log(值); }} />' –

+0

@DragosRizescu我不想传递一个事件。该函数使用'query'字符串来调用API。 – BugHunterUK

+0

你没有通过一个事件,你正在接收一个你可以把你的查询字符串。老实说,写作,'onChange = {(e)=> props.onInput(e.target.value)}'与我写的几乎是一样的,不同的是你对待'事件'你收到一个不同的地方;) –

回答

3

您可以使用箭头功能一样<input type="text" onChange={ (e) => props.onInput(e.target.value) } />

见下

const Search = props => { 
 
    return (
 
     <div id="search"> 
 
      <h2>Live Search</h2> 
 
      <input type="text" onChange={ (e) => props.onInput(e.target.value) } /> 
 
     </div> 
 
    ) 
 
} 
 

 
const onInput = (val) => { 
 
    console.log(val) 
 
} 
 
ReactDOM.render(<Search onInput={onInput}/>, document.getElementById('app'))
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script> 
 
<div id="app"><div>

3

片段可以使用合成事件的值传递给回调。

https://facebook.github.io/react/docs/events.html

如果你想通过只值,你可以使用e.currentTarget.value

从currentTarget当前文档:

它总是指给事件处理程序已被连接到相对于将event.target标识在其上发生事件的元件的元件。

const Search = props => { 
    return (
     <div id="search"> 
      <h2>Live Search</h2> 
      <input 
       type="text" 
       onChange={e => props.onInput(e.currentTarget.value) } /> 
     </div> 
    ) 
} 

export default Search