【发布时间】:2015-11-30 19:24:48
【问题描述】:
我正在尝试我的第一个 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。可能this不再是Searcher组件了。 -
感谢 FaureHu - 在代码中的哪个位置记录
this?尝试从Searcher.handleUserInput()或SearchFacet.handleChange()登录没有任何作用。 -
你可以看到我对类似问题的回答。你可以找到详细解释:stackoverflow.com/questions/34713718/…
标签: javascript reactjs