javascript – React:如何在setState上更新state.item [1]? (用JSFiddle)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – React:如何在setState上更新state.item [1]? (用JSFiddle),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2086字,纯文字阅读大概需要3分钟。
内容图文
![javascript – React:如何在setState上更新state.item [1]? (用JSFiddle)](/upload/InfoBanner/zyjiaocheng/715/9204d05a32a84c8facb54d09cdf66d2b.jpg)
我正在创建一个用户可以设计自己的表单的应用程序.例如.指定字段的名称以及应包含的其他列的详细信息.
该组件可作为JSFiddle here使用.
我的初始状态如下:
var DynamicForm = React.createClass({
getInitialState: function() {
var items = {};
items[1] = { name: 'field 1', populate_at: 'web_start',
same_as: 'customer_name',
autocomplete_from: 'customer_name', title: '' };
items[2] = { name: 'field 2', populate_at: 'web_end',
same_as: 'user_name',
autocomplete_from: 'user_name', title: '' };
return { items };
},
render: function() {
var _this = this;
return (
<div>
{ Object.keys(this.state.items).map(function (key) {
var item = _this.state.items[key];
return (
<div>
<PopulateAtCheckboxes this={this}
checked={item.populate_at} id={key}
populate_at={data.populate_at} />
</div>
);
}, this)}
<button onClick={this.newFieldEntry}>Create a new field</button>
<button onClick={this.saveAndContinue}>Save and Continue</button>
</div>
);
}
我想在用户更改任何值时更新状态,但我很难定位正确的对象:
var PopulateAtCheckboxes = React.createClass({
handleChange: function (e) {
item = this.state.items[1];
item.name = 'newName';
items[1] = item;
this.setState({items: items});
},
render: function() {
var populateAtCheckbox = this.props.populate_at.map(function(value) {
return (
<label for={value}>
<input type="radio" name={'populate_at'+this.props.id} value={value}
onChange={this.handleChange} checked={this.props.checked == value}
ref="populate-at"/>
{value}
</label>
);
}, this);
return (
<div className="populate-at-checkboxes">
{populateAtCheckbox}
</div>
);
}
});
我应该如何制作this.setState以使其更新项目[1] .name?
解决方法:
你可以使用update immutability helper for this:
this.setState({
items: update(this.state.items, {1: {name: {$set: 'updated field name'}}})
})
或者,如果您不关心能够使用===在shouldComponentUpdate()生命周期方法中检测此项的更改,则可以直接编辑状态并强制组件重新呈现 – 这实际上与@相同limelights的答案,因为它将一个物体拉出状态并进行编辑.
this.state.items[1].name = 'updated field name'
this.forceUpdate()
编辑后添加:
有关如何将状态保持父级的回调函数传递给需要触发状态更改的子组件的示例,请查看0700中的Simple Component Communication课程.
内容总结
以上是互联网集市为您收集整理的javascript – React:如何在setState上更新state.item [1]? (用JSFiddle)全部内容,希望文章能够帮你解决javascript – React:如何在setState上更新state.item [1]? (用JSFiddle)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。