可以为 Redux Store 交换状态结构吗?

Possible to Interchange State Structures for Redux Store?

我正在努力实现的目标

我的 React 应用程序非常大,并且包含用户在浏览应用程序时翻阅的整页组件(想象一个全屏幻灯片,其中每张幻灯片都是交互式的并且包含不同的组件但具有相同的"feel" 彼此)。

我知道 Redux 严格强调单个 React 应用程序的单个商店,但是,像这样拥有一个巨大的商店似乎仍然有点过分,而且实施起来很糟糕:

obj {
    slide1: { // a lot of state },
    slide2: { // a lot of state },
    slide3: { // a lot of state },
    // more slide states
}

理想情况下, 因为每张幻灯片完全不依赖于彼此,当一个幻灯片组件安装时,该组件 单独 将 utilize/create Redux store 它认为合适,但是当用户移动到下一张幻灯片时,store 被清空,为新的幻灯片组件提供一个新的状态采用。我可以想象,在任何幻灯片 X 上,商店都会看起来像这样:

state {
    slideX: { // a lot of state }
    // no other slides
}

这个实现是possible/preferable,如果是,如何实现?

我的关注

我认为这里最大的问题是,例如,如果用户在幻灯片 3 上,并单击该幻灯片上的某个内容,然后将发送一个动作,它将不必要地触发所有 reducer 对于所有处于绝对不需要状态的幻灯片。 这似乎会对性能产生相当负面的影响,而且一般来说这似乎是一个糟糕的状态结构。 也许我对这种 Redux 存储结构的性能担忧是没有根据的?

我认为你误解了 Redux 的目的。

组件已经具有单独作用域的状态。 Redux 并不是要重新发明那个轮子。您描述的用例由组件状态完美处理。

Redux 旨在保存与整个应用程序或至少 2 个以上不同部分相关的信息。

你不应该过度使用 redux。它有它非常有价值的用途,但当你需要螺丝刀时不要使用锤子。