Saya mencoba React.js pertama saya dan saya bingung sejak awal ... Saya memiliki kode di bawah ini, yang membuat formulir pencarian menjadi <div id="search"></div>
. Tetapi mengetik di kotak pencarian tidak melakukan apa-apa.
Agaknya ada sesuatu yang hilang melewati props dan keadaan naik turun, dan ini sepertinya masalah umum. Tapi saya bingung - saya tidak bisa melihat apa yang hilang.
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')
);
(Akhirnya saya akan memiliki jenis lain SearchFacet*
tetapi saya hanya mencoba membuat yang ini berfungsi.)
this
pada titik mana dalam kode? Mencoba masuk Searcher.handleUserInput()
atau SearchFacet.handleChange()
tidak melakukan apa pun.
this
saat Anda memasukkan bidang teks. Bisa jadi ituthis
bukanSearcher
komponennya lagi.