【发布时间】:2015-10-04 19:06:41
【问题描述】:
我正在尝试设置一个使用 React 的页面。该页面有一个下拉菜单组件,它应该触发父级中的状态更新。我尝试了几个示例,但无法正常工作。这是我尝试过的两种方法的简化示例:
-
将回调作为道具传递给更新父状态的子节点:
let Example = React.createClass({ getInitialState() { test: "fail" }, _updateOnChange(value) { this.setState({test: value}) }, render() { return (<div><DropDown onValueChange=this._updateOnChange} /> <p>{this.state.test}</p></div>); } }); let DropDown = React.createClass({ getInitialState() { return { value: "fail" }; }, _onChangeHandler(e) { this.setState({value: e.target.value}); this.props.onValueChange(this.state.value); }, render() { return ( <select onChange={this._onChangeHandler} value={this.state.value}> <option value="1">1</option> <option value="2">2</option> </select> ); }});
这总是显示“失败”而不是“1”或“2”。
-
让父级使用 onChange 而不是回调来获取下拉菜单的值。
let Example = React.createClass({ getInitialState() { test: "fail" }, _updateOnChange(e) { this.setState({test: e.target.value}) }, render() { return (<DropDown onChange=this._updateOnChange} />); }});
let DropDown = React.createClass({ getInitialState() { return { value: "fail" }; }, _onChangeHandler(e) { this.setState({value: e.target.value}); }, render() { return ( <select onChange={this._onChangeHandler} value={this.state.value}> <option value="1">1</option> <option value="2">2</option> </select> ); }});
如果我尝试渲染状态,我可以在 DropDown 组件中看到状态更改,但父级没有更改。我做错了什么?
【问题讨论】:
-
请问您可以创建一个快速的 jsFiddle 吗?
标签: reactjs