我正在尝试使用React.js的第一部分,并且很早就陷入了困境...我有下面的代码,该代码将搜索表单呈现为<div id="search"></div>
。但是,在搜索框中输入内容无济于事。
大概在通过道具并上下移动时会丢失一些东西,这似乎是一个常见问题。但是我很沮丧-我看不到缺少的东西。
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')
);
(最终,我会使用其他类型的,SearchFacet*
但是我只是想让这一类正常工作。)
this
在代码的哪一点登录?尝试从中登录Searcher.handleUserInput()
或SearchFacet.handleChange()
不执行任何操作。
this
输入文本字段时尝试登录。可能不再this
是该Searcher
组件了。