Reactjs 如何使用钩子更新数组中一个对象的状态

Reactjs 如何使用钩子更新数组中一个对象的状态,reactjs,react-native,expo,Reactjs,React Native,Expo,我想更新数组中一个对象的状态,而不是更新整个数组的状态 const [users, setUsers] = useState; const data = [ { id: 1, name: "John", activeAccount: 1 }, { id: 2, name: "Mary", activeAccount: 1 }, { id: 3, name: "Max", activeAccount: 1 } ]

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

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

我也试着用


有人能帮忙吗?有解决方案吗?

呼叫时可能出现问题

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);

然后需要调用不带对象的setUsers:

setUsers(
  update(...users, {index: {activeAccount: {$set: 0 }}})
)
解决方案:

const index = users.findIndex(obj => obj.id === user.id);
setUsers([...users, users[index].activateAccount = 0])
你好,我想这应该对你有帮助。
setUsers(
  update(...users, {index: {activeAccount: {$set: 0 }}})
)
const index = users.findIndex(obj => obj.id === user.id);
setUsers([...users, users[index].activateAccount = 0])