在更新组合减速器中的减速器状态之一时,保留其他减速器状态免于重置

时间:2021-06-30 16:18:34

标签: reactjs redux react-redux redux-thunk

我尝试创建一个带有两个状态对象的组合减速器。 我尝试创建的状态结构。

state: {builds: {data:[], loaded: false }, details: {data:[], loaded: false}}

当子组件分派操作以更新详细信息时,它会将 builds 的值重置为默认值。由于 state.builds.loading 的默认值为 false,所有组件都在 builds.loaded 后面,因此整个页面开始加载数据。

在 codeandbox.io 上重新创建相同的场景 => codeSandox.io

说明: 当前,当单击 Fetch 按钮时,在成功渲染 Dash 组件后分派操作并将状态更新为:

{
   builds: { data: Array(2), best: false, single: true, loaded: true},
   details: {loaded: false}
}

并且为 Dash 组件内的每个 builds.data 值呈现 ListItem 组件。

在 ListItem 中有一个带有标签详细信息的按钮,用于获取详细信息。单击后,将调度一个操作以获取详细信息,并且在加载数据时会呈现一个对话框(强制超时 3 秒以复制实际调用)。加载落后于 details.loaded。 加载后状态更新为

{
   builds: { loaded: false},
   details: {data: Array(2), loaded: true}
}

builds.loaded 被更新为 false(这不应该发生)时,整个组件被重新渲染为加载。

预期状态:

{
   builds: { data: Array(2), best: false, single: true, loaded: true},
   details: {data: Array(2), loaded: true}
}

0 个答案:

没有答案