2016-11-26 80 views
1

我需要知道如何更新状态内的用户数组以接受新的用户对象。如何更新反应状态对象数组

状态用户数组仅包含标识和名称。

当我尝试使用更新插件推送用户数组中的项目。

var newUser = {id:1, name:'Foo'}; 
let newState = update(this.state, {users: {$push: [newUser]}}); 

“反应-dom.js:17858未捕获的错误:对象是不是一个阵营的孩子有效。(发现:物体键{ID,名称})如果你的意思是使儿童的收集,使用(...)“

+0

您是否尝试过错误消息中提及的方法?例如,用'[id:...]'替换'{id:...}',它应该可以工作? –

+0

我也有同样的问题。 – yk1007

回答

0

你正在改变状态。你可以使用createFragment(object)从React附加组件包装对象。请尝试:

const users = this.state.users 
users.push(newUser) 
this.setState(Object.assign({}, this.state, { users }})) 
+0

不,它不工作 – Sumthg

+0

我编辑了我的答案,试试这种方式。 –

+0

更好的方法来执行此操作:'this.setState((prevState)=> {users:prevState.users.push(newUser)})'' – cynicaldevil