繁体   English   中英

Redux可变减速器的初始状态

[英]Redux initial state for variable reducer

在我的程序中,我有多个网格,但是它们非常相似,因此我决定为所有这些网格制作一个减速器,以保持我的代码美观和干燥。 当我调度事件以更改存储时,我将网格名称与有效负载一起发送给参数,并且所有内容都会以该网格名称写入存储。

例如:如果我发送事件以更改目录网格的网格标题,则存储将如下所示:(假定用户已经在存储中)

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

我的问题是如何编写模块化初始状态? 目前,除了网格名称之外,我没有其他初始状态,因为没有它们,我的代码将无法正常工作。 当我需要将某些内容设置为初始状态时,则必须将其包含在我的函数initializeGrid ,该函数initializeGrid分派一些事件以设置类似于初始状态的内容。

但是没有初始状态,我的减速器会很混乱,因为在几乎每种情况下,我都必须检查是否存在某种状态,或者这是否是第一个项。

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

什么是正确的解决方案?

为什么您需要除{}之外的其他初始状态?

减速器可以只用所需的值更新状态。 如果键存在,则其值将被更新;如果键不存在,则将被添加。 看下面的例子:

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 }}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM