Redux变量reducer的初始状态

时间:2018-02-19 19:59:33

标签: javascript reactjs redux reducers

在我的程序中,我有多个网格,但它们非常相似,所以我决定为它们制作一个减速器以保持我的代码很好并且干燥。当我将事件发送到更改商店时,我将网格名称作为参数与payoload一起发送,并且所有内容都写入该网格名称下的商店。

例如:如果我发送事件来更改目录网格的网格标题,那么存储将如下所示:(允许persume用户已经存储)

grid: {
    catalog: {
        headers: {
            some data
        }
    },
    users: {
        headers: {
            some other data
        }
    }
}

我的问题是如何编写模块初始状态?目前我没有除网格名称之外的初始状态,因为没有它们我的代码不起作用。当我需要将某些东西设置为初始值时,我必须将它包含在我的函数initializeGrid中,该函数调度一些事件以设置类似于初始状态的东西。

但是没有初始状态,我的减速器非常混乱,因为在几乎每种情况下我都要检查是否存在某种状态或者这是否是第一次进入。

只知道我不是懒惰但是我的初始状态将是300行长并且它不会是干的:/

什么是正确的解决方案?

1 个答案:

答案 0 :(得分:1)

为什么你需要{}之外的初始状态?

reducer可以只更新具有所需值的状态。 如果密钥存在,则更新其值,如果不存在,则将其添加。 看一下下面的例子:

let x = { "a" : { "b": 11 }}
let y = { ...x, "c" : { "d": 22 }}
let z = { ...y, "a": { "b": 33 }}

值如下(省略了""为了便于阅读):

x: { a: { b: 11 }
y: { a: { b: 11 }, c: { d: 22 }}
z: { a: { b: 33 }, c: { d: 22 }}