我尝试创建一个带有两个状态对象的组合减速器。 我尝试创建的状态结构。
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}
}