相关疑难解决方法(0)

Redux - 为什么要正常化?

我一直在努力学习如何更好地构建我的Redux商店,并偶然发现Dan的这一课.

https://egghead.io/lessons/javascript-redux-normalizing-the-state-shape#/guidelinesModal

虽然我理解如何以这种方式规范化我的数据,但我不明白它背后的动机.特别是,我有两个问题.

  1. 为什么简单的数组不够用?Dan提到 - "在复杂的应用程序中,我们可能有不止一个阵列,并且在不同阵列中具有相同ID的待机可能会失去同步".我不明白这个,我可以举一个例子吗?我在使用对象时看到的唯一好处是提高了效率,因为我们不需要映射整个数组,以防我想将某个待办事项委托给另一个reducer.

  2. 为什么我们需要维护allIds列表?当我们可以轻松地映射所有待办事项列表并获取它时,为什么要保持这种额外状态?

我知道normalizr会为我们做这件事,但为什么我们首先应该正常化呢?即使响应没有深度嵌套,标准化也有意义吗?

编辑1:

感谢您的回答,克里斯托弗.

让我们假设您的状态树看起来像这样

{
    user: {
        byId: {
            1: {
                id: 1,
                name: 'Buy stuff'
               }, 
            2: {
                id: 2,
                name: 'Yeah'
               }
            }
        },
        allIds: [1, 2],
        subscribedIds: [5],
    }
    department: {
        byId: {
            5: {
                id: 5,
                name: 'Sell Stuff'
            }
        },
        allIds: [5],
        subscribedIds: []
    }   
}
Run Code Online (Sandbox Code Playgroud)

我没有看到在这里有一个对象代替数组的好处.我也可以选择能够从部门获取ID订阅的待办事项,即使它是一个数组.看来我对这个概念的理解有点不足.你能详细说明吗?

javascript reactjs redux

14
推荐指数
2
解决办法
4877
查看次数

标签 统计

javascript ×1

reactjs ×1

redux ×1