当前位置: 首页 > 面试题库 >

如何使用不变性助手来更新数组中的嵌套对象?

庄康胜
2023-03-14
问题内容

在reducer内部,给定一个状态对象:

var state = {
        "data": [{
            "subset": [{
                "id": 1
            }, {
                "id": 2
            }]
        }, {
            "subset": [{
                "id": 10
            }, {
                "id": 11
            }, {
                "id": 12
            }]
        }]
    }

如您所见,数据是一个嵌套数组,每个元素中都有一个数组。

知道action.indexToUpdate将是数据索引,我想以编程方式将data [action.indexToUpdate]
.subset更新为新数组。例如,如果action.indexToUpdate = 0,那么data [0]将从

[{"id":1},{"id":2}]

[{"id":4},{"id":5}]

为此,我有:

let newSubset = [{"id":4},{"id":5}]
let newState = update(state.data[action.indexToUpdate], {
                subset: {
                    newSubset,
                },
            })

但是当我执行此操作时,它返回错误:

TypeError: value is undefined

关于更新功能。

我一直在这里查看react
ducomentathtml" target="_blank">ion:https://facebook.github.io/react/docs/update.html,但我真的不知道该怎么做。请指教!


问题答案:

您的更新看起来像

 var obj = {"state" : {
    "data": [{
        "subset": [{
            "id": 1
        }, {
            "id": 2
        }]
    }, {
        "subset": [{
            "id": 10
        }, {
            "id": 11
        }, {
            "id": 12
        }]
    }]
}}
return update(obj, {
  "state" : {
      "data": {
          [action.indexToUpdate]: {
            "subset": {
                 $set: [newSubset]
            }
          }
      }
  }
})

如果子集中还有其他字段,但是您只希望更改包含其他键的特定索引处的字段,则应编写

return update(obj, {
  "state" : {
      "data": {
          [action.indexToUpdate]: {
            "subset": {
                [id]: {$merge: newSubset}
            }
          }
      }
  }
})


 类似资料:
  • 在reducer内部,给定一个状态对象: 在更新喷泉上。 我一直在查看这里的react ducomentation:https://facebook.github.io/react/docs/update.html,但我真的不知道如何做到这一点。请指教!

  • 问题内容: 我正在使用不变性助手在React状态下更新数组中的对象。 我要修改的对象是嵌套的: 我想使用不变性助手来更新b的第n个元素内的prop c。 没有不变性帮助器的等效代码是: 我知道上面的代码有点难看。我假设使用不变性助手的代码可以解决我的问题。谢谢 问题答案: 一种方法是使用 jsfiddle

  • 假设我们有以下集合,我对此没有什么问题: > 我想增加“item_name”的价格:“my_item_two”,如果它不存在,应该将它追加到“items”数组中。

  • 我需要更新嵌套在我的用户文档中的一个字段,该字段包含一个part对象数组,以添加新的part。一个part对象如下所示: 所以这意味着$addToset对我的情况没有好处...现在我不知道该怎么办。

  • 问题内容: 我正在尝试更新嵌套数组中的值,但无法使其正常工作。 我的对象是这样的 我需要将值推送到“ answeredBy”数组。 在下面的示例中,我尝试将“成功”字符串推到“ 123 _id”对象的“ answeredBy”数组中,但是它不起作用。 我找到了此链接,但其答案仅表示我应该使用类似结构的对象而不是数组。这不适用于我的情况。我真的需要将我的对象嵌套在数组中 如果您能在这里帮助我,那就太

  • 我正在尝试更新MongoDB中嵌套对象中的一个键值。目前,我的做法是覆盖整个嵌套对象,我如何改变一个键-值对?