javascript - 在 React Native 中更新嵌套状态对象?

标签 javascript arrays reactjs react-native updating

我正在创建一个购物 list 应用程序,使用户能够创建购物 list 。用户创建的每个购物 list 都具有以下属性:

键 姓名 预算 列表项

listItem 属性中嵌套的是列表项对象的数组。

每个列表项都具有以下属性: ID: 姓名: 价格:

这是一个代码片段:

const [shoppingLists, setShoppingList] = useState([
    {key: '1', name: `Khari's Shopping List`, budget: 200, listItems:[
            {id: Math.random().toString(), name:"butter", price:2.00},
            {id: Math.random().toString(), name:"milk", price:2.00},
            {id: Math.random().toString(),  name:"cereal", price: 3.00},
            {id: Math.random().toString(),  name:"chicken", price: 4.00},
            {id: Math.random().toString(),  name:"spaghetti", price: 5.00},
        ], },
    {key: '2', name: `Janae's Shopping List`, budget: 500, listItems:[
            {id: Math.random().toString(), name:"butter2", price:0.00},
            {id: Math.random().toString(), name:"milk2", price:0.00},
            {id: Math.random().toString(),  name:"cereal3", price: 0.00},
            {id: Math.random().toString(),  name:"chicken2", price: 0.00},
            {id: Math.random().toString(),  name:"spaghetti2", price: 0.00},
        ], },

])

我想要做的是当用户在文本输入中输入数字时更新嵌套在列表项中的价格属性。关于如何实现这一目标有什么想法吗?

当用户在文本输入中输入数字时,我将根据 id 更新列表项数组中的价格属性。我不知道从哪里开始,希望得到一些指导。感谢您提供的任何帮助。

最佳答案

在功能组件状态更新中,您需要将现有状态浅层复制到新对象中,从而更新特定对象。对于更深层的嵌套状态,您还需要复制嵌套状态并更新。

给定指定的keyid和更新的价格

setShoppingList(lists =>
  lists.map(list =>
    list.key === key
      // Key matches, spread existing state and update list items array
      ? {
          ...list,
          listItems: list.listItems.map(item =>
            item.id === id
              // Item id match, spread existing item and update price
              ? {
                  ...item,
                  price
                }
              // No item id match, pass existing item
              : item
          )
        }
      // No key match, pass existing list
      : list
  )
);

Edit Update Nested State

关于javascript - 在 React Native 中更新嵌套状态对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63064758/

相关文章:

javascript - JavaScript 中的 OnClick 函数

javascript - 具有奇怪行为的发布请求

javascript - 我怎样才能让我的函数处理多个字符串数组?

java - 为什么重载方法选择的是 Object 而不是带有原始数组的 Object[] ?

reactjs - material-ui 如何覆盖嵌套样式

c# - 等待文件存在于 ASP.NET 中

javascript - 在 JavaScript 排序期间加载动画

Java:按第一列(int 填充)对二维数组进行排序

javascript - 警告 : failed prop type in React error

javascript - 无法访问嵌套不可变对象(immutable对象)中的数组