2017-08-03 2 views
1

Nehmen Sie den folgenden Code ein:Functional ReactJS - Datenübergabe/Argumente an Callback

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

export default Search 

Ist es möglich, Argumente zu props.onInput (speziell das value Attribut <input>) zu übergeben. Ich weiß, dass ich dies als eine Klasse stattdessen erstellen kann, und einen Handler erstellen, der Daten an props.onInput übergibt, aber ich habe mich nur gefragt, ob es möglich ist, dies in einer funktionalen Weise zu tun.

+0

Ihre onChange Funktion wird ein Ereignis erhalten, können Sie den Wert aus der Veranstaltung teilnehmen: ' {console.log (value); }} /> ' –

+0

@DragosRizescu Ich möchte kein Ereignis passieren. Die Funktion akzeptiert eine query-Zeichenfolge, um eine API aufzurufen. – BugHunterUK

+0

Sie übergeben kein Ereignis, Sie erhalten ein Ereignis, aus dem Sie die Abfragezeichenfolge übernehmen können. Ehrlich gesagt, schreiben, onChange = {(e) => props.onInput (e.target.value}} ist fast das gleiche wie das, was ich geschrieben habe, das unterschiedliche Wesen, das du behandelst, das "Ereignis", das du in einem anderen erhältst Platz;) –

Antwort

3

Sie können unter

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

Sie können die synthetische Ereignis verwenden, um übergeben Sie den Wert an die Rückruf Verwendung von Pfeil Funktion wie <input type="text" onChange={ (e) => props.onInput(e.target.value) } />

sehen einen Ausschnitt machen.

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

Wenn Sie nur den Wert zu übergeben möchten, können Sie e.currentTarget.value verwenden.

Von current Dokumentation:

Es bezieht sich immer auf das Element der Ereignishandler angebracht wurde, im Gegensatz zu event.target, die das Element identifiziert, auf dem das Ereignis aufgetreten ist.

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 
Verwandte Themen