我目前正在开始学习ReactJS,在更新数组时遇到了一些麻烦.
目前,我有一个可以正常工作的可搜索联系人列表.但是,使用列表下方的输入框,我试图使用update()函数将其他项添加到列表中.
到目前为止,我所获得的关于更新功能的示例如下.理想情况下,更新的内容有时会来自按钮左侧的输入框,但目前我只是试图将静态项目作为测试.
updateContact: function(e){
e.preventDefault();
var newItems = React.addons.update(this.state.initialItems, {$push: ["New Item"]})
return;
},
任何帮助或指导将不胜感激,下面提供完整的JSFiddle和整个代码.
解决方法:
您没有呼叫setState
,因此该组件永远不会重新渲染:
updateContact: function(e){
e.preventDefault():
var newItems = React.addons.update(this.state.initialItems, {$push: ["New Item"]});
this.setState({
initialItems: newItems,
items: newItems
}); // update state
},
请注意,更新this.state.items和this.state.initialItems.我假设您正在为过滤列表使用项目,并为列表中的所有项目使用initialItems.
当然,您必须用文本字段的实际值替换“新项”.
我还将删除componentWillMount并在getInitialState中将initialItems和items设置为相同的值.
同样,如果您只是将处理程序直接绑定到按钮并删除< form> ;,则不必处理防止事件的发生.似乎是一种回旋的方式来触发回调. 清理示例:https://jsfiddle.net/f554xrh0/