首页 > 解决方案 > 如何使用钩子更新数组 React Native 中一个对象的状态

问题描述

我想更新数组中一个对象的状态,而不是更新整个数组的状态。

const [users, setUsers] = useState;

const data = [
{ 
    id: 1,
    name: "John",
    activeAccount: 1 
},
{ 
    id: 2,
    name: "Mary",
    activeAccount: 1 
},
{ 
    id: 3,
    name: "Max",
    activeAccount: 1 
}
]

例如,John 停用了他的帐户,并且 activeAccount 的状态应该更新为 0。所以只有一个对象应该被更新(他没有来自其他用户的数据并且不能更新所有数组) - 举个例子,为什么我在这里使用user.id


const index = users.findIndex(obj => obj.id === user.id); // find index of object
users[index].activeAccount = 0
setUsers(users) // Nothing updated

我也尝试使用Immutability Helper

import update from 'immutability-helper';

const index = users.findIndex(obj => obj.id === user.id); // find index of object
setUsers({
   users: update(...users, {index: {activeAccount: {$set: 0 }}})
})

有人可以帮忙吗?有解决办法吗?

标签: reactjsreact-nativeexpo

解决方案


解决方案:

const index = users.findIndex(obj => obj.id === user.id);
setUsers([...users, users[index].activateAccount = 0])

推荐阅读