如何使用react进行双向数据绑定,使输入值A在B更新时更新,反之亦然
How would one do two way data binding with react, having an input value A update when B is, and vice versa?
目前我有以下代码:
var Text = React.createClass({
getInitialState: function(){
return {
pageName: this.props.pageName,
url: this.props.pageName,
}
},
handleChange: function(){
var pageName = this.refs.pageName.getDOMNode().value;
var url = this.refs.url.getDOMNode().value;
this.setState({
pageName: pageName,
url: url,
});
},
render: function() {
return (
<div>
pageName: <input ref="pageName" onChange={this.handleChange} value={this.state.url}/><br/>
url: <input ref="url" onChange={this.handleChange} value={this.state.pageName.toLowerCase()}/><br/>
</div>);
}
});
React.render(<Text pageName="name" url="url" />, document.body);
从这里的示例中可以看到,它没有像预期的那样工作。我想知道是否有人能就这个话题给我指点一下。谢谢:)
如果您希望通过更改pageName来更新url,反之亦然,那么您可能需要这样做:
var Text = React.createClass({
getInitialState: function(){
return {
pageName: this.props.pageName,
url: this.props.pageName,
}
},
handleChange: function(event){
var pageName = event.target.value;
var url = event.target.value.toLowerCase();
this.setState({
pageName: pageName,
url: url,
});
},
render: function() {
return (
<div>
pageName: <input ref="pageName" onChange={this.handleChange} value={this.state.pageName}/><br/>
url: <input ref="url" onChange={this.handleChange} value={this.state.url}/><br/>
</div>);
}
});
React.render(<Text pageName="name" />, document.body);
您有几个错误。
var Text = React.createClass({
getInitialState: function(){
return {
pageName: this.props.pageName,
url: this.props.url,
}
},
handlePageChange: function(event){
this.setState({pageName: event.target.value});
},
handleUrlChange: function(event){
this.setState({url: event.target.value});
},
render: function() {
return (
<div>
pageName: <input ref="pageName" onChange={this.handlePageChange} value={this.state.pageName.toLowerCase()}/><br/>
url: <input ref="url" onChange={this.handleUrlChange} value={this.state.url}/><br/>
</div>);
}
});
React.render(<Text pageName="name" url="url" />, document.body);
相关文章:
- $rootScope未使用forEach进行更新
- 使用AngularJS中的筛选器更新给定的表
- 使用mongodb更新中的一个变量
- 无法在现有状态转换期间更新-未使用任何非法的setState()
- 使用它更新集合中的嵌套数组's索引
- 使用Javascript更新输入框中的文本
- 如果我不应该在组件WillUpdate中调用setState,如何更新状态(使用ReactJS)
- Angular.js:如何将数据从一个HTML更新到使用相同控制器的另一个HTML
- 在 Twitter Bootstrap 3.0 中动态设置弹出框值,并在滚动更新时使用 href
- Javascript setInterval没有't更新内部使用的时间戳
- 只更新已使用Webpack.watch()更改的区块
- 中继器更新时使用动画
- Ajax X和Y位置更新无法使用Jquery UI可拖动程序正常工作
- 推迟或暂停敲除中的依赖项评估,直到视图模型完全更新(例如使用映射插件)
- 作用域是't更新$apply使用
- 在应用更新时使用本地存储进行应用内购买
- 内联更新mysql使用jquery/php
- AngularJS -变量在视图中不更新(不使用作用域)
- 如何更新“复杂”使用jQuery's .data()存储的数据
- 无缓存和更新在使用JSP和Javascript的IE 10中不起作用