Sto provando il mio primo bit di React.js e sono stumped presto ... Ho il codice qui sotto, che esegue il rendering di un modulo di ricerca in <div id="search"></div>
. Ma digitando nella casella di ricerca non fa nulla.Non riesco a digitare Campo di testo di input React
Presumibilmente qualcosa sta scomparendo passando i puntelli e lo stato su e giù, e questo sembra un problema comune. Ma sono perplesso - non riesco a vedere cosa manca.
var SearchFacet = React.createClass({
handleChange: function() {
this.props.onUserInput(
this.refs.searchStringInput.value
)
},
render: function() {
return (
<div>
Search for:
<input
type="text"
value={this.props.searchString}
ref="searchStringInput"
onchange={this.handleChange} />
</div>
);
}
});
var SearchTool = React.createClass({
render: function() {
return (
<form>
<SearchFacet
searchString={this.props.searchString}
onUserInput={this.props.onUserInput}
/>
<button>Search</button>
</form>
);
}
});
var Searcher = React.createClass({
getInitialState: function() {
return {
searchString: ''
}
},
handleUserInput: function(searchString) {
this.setState({
searchString: searchString
})
},
render: function() {
return (
<div>
<SearchTool
searchString={this.state.searchString}
onUserInput={this.handleUserInput}
/>
</div>
);
}
});
ReactDOM.render(
<Searcher />,
document.getElementById('searcher')
);
(Alla fine mi avrà altri tipi di SearchFacet*
ma sto solo cercando di ottenere questo lavoro.)
Prova a registrare 'questo' quando inserisci il campo di testo. Potrebbe essere che 'this' non sia più il componente' Searcher'. – FaureHu
Grazie FaureHu - registrazione 'this' a che punto del codice? Cercando di accedere da 'Searcher.handleUserInput()' o 'SearchFacet.handleChange()' non fa nulla. –
puoi vedere la mia risposta per domande simili. Puoi trovare la spiegazione dettagliata: http://stackoverflow.com/questions/34713718/input-field-doesnt-receive-keyboard-events-when-rendering-with-value-property/36871399?noredirect=1#comment61310144_36871399 –