首页 文章

React Redux 路由器 - 我应该为所有 pages/components 使用一个 state/store 吗?

提问于
浏览
8

我正在使用 React Redux,在阅读了react-router-reduxredux-router之后,在阅读了丹阿布拉莫夫的回答之后,我决定使用“vanilla”react-router(此时我并不关心时间旅行等)。

剩下的唯一未决问题是如何处理不同路线的状态。每个路径 sub-tree 在我的应用程序中可以是一个不同且独立的部分(特别是当它变大时)。拥有一家商店来处理所有路线/页面仍然是一个好习惯吗?我(至少)不应该为每个主要路径路径都有不同的 store/state 吗?

我认为路线应该是某种无国籍和独立的,这意味着如果我直接进入我的一个链接,它应该工作,并且不会知道其他兄弟路线。我应该把它反映到我的商店吗?

编辑

经过一番思考,我想使用不同的减速器“CombineReducers”就可以了。我唯一需要验证的是,在导航时,以前的路线状态不会持续存在

1 回答

  • 2

    关于验证以前路由状态不存在的可能解决方案:

    当用户在页面之间导航时,每个路径中的顶级组件都是挂载和卸载。您可以使用他们的生命周期方法发送任何 redux 事件来清理您的状态。

    例如,从componentWillUnmount发送CLEAN_STATE。您应该在它的顶级 reducer end return 初始状态中捕获此事件。要执行此操作,您可以使用undefined作为状态参数手动调用所有嵌套的 Reducer。在这种情况下,每个 reducer 将返回它的初始状态。

相关问题