Tôi đang thử phần đầu tiên của mình với React.js và đã sớm bị bối rối ... Tôi có đoạn mã dưới đây, hiển thị một biểu mẫu tìm kiếm <div id="search"></div>
. Nhưng gõ vào hộp tìm kiếm không làm gì cả.
Có lẽ điều gì đó đang bị thiếu khi chuyển các đạo cụ và trạng thái lên xuống, và đây có vẻ như là một vấn đề phổ biến. Nhưng tôi bối rối - tôi không thể nhìn thấy những gì còn thiếu.
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')
);
(Cuối cùng tôi sẽ có các loại khác SearchFacet*
nhưng tôi chỉ đang cố gắng làm cho loại này hoạt động.)
this
tại điểm nào trong mã? Cố gắng đăng nhập từ Searcher.handleUserInput()
hoặc SearchFacet.handleChange()
không làm bất cứ điều gì.
this
khi bạn nhập trường văn bản. Nó có thểthis
không phải làSearcher
thành phần nữa.