reactjs - 如何使用钩子更新数组 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 }}})
})
有人可以帮忙吗?有解决办法吗?
解决方案
解决方案:
const index = users.findIndex(obj => obj.id === user.id);
setUsers([...users, users[index].activateAccount = 0])
推荐阅读
- r - 基于匹配字符串模式的过滤
- sql - 如何识别查询/存储过程中使用的所有表
- javascript - 来自字符串 + 变量的 Javascript 变量
- azure - 在 Asp.Net CORE 3.x 中实现 Active Directory 组
- javascript - JSONLint 说 JSON 有效,但我无法在 JavaScript 中从中获取值
- python - 如何打印以下程序的目标总和的不同对?
- reactjs - 为什么这个流类型定义不起作用?
- ios - Siri Intent Extension 中的 TouchID 身份验证
- c - 在 C 中是否有可能具有函数的结构或联合?
- javascript - 在 Javascript 中创建的颜色选择器不会将颜色值呈现给 DOM