我希望更新数组中一个对象的状态,而不是更新整个数组的状态。
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 }}})
})有人能帮上忙吗?有解决方案吗?
发布于 2020-01-16 07:43:01
解决方案:
const index = users.findIndex(obj => obj.id === user.id);
setUsers([...users, users[index].activateAccount = 0])发布于 2020-01-16 06:36:47
调用时可能出现问题
setUsers({
users: update(...users, {index: {activeAccount: {$set: 0 }}})
})如果您使用以下命令初始化状态:
const data = [
{
id: 1,
name: "John",
activeAccount: 1
},
{
id: 2,
name: "Mary",
activeAccount: 1
},
{
id: 3,
name: "Max",
activeAccount: 1
}
]
const [users, setUsers] = useState(data);然后你需要调用不带object的setUsers:
setUsers(
update(...users, {index: {activeAccount: {$set: 0 }}})
)https://stackoverflow.com/questions/59760373
复制相似问题