8

我正在使用 React + Redux,在阅读了react-router-reduxredux-router以及Dan Abramov 的回答之后,我决定使用“vanilla”react-router(我不在乎时间旅行等)这点)。

剩下的唯一悬而未决的问题是如何处理不同路由的状态。在我的应用程序中,每个路由子树都可以是不同且独立的部分(尤其是当它变大时)。让一个商店处理所有路线/页面仍然是一种好习惯吗?我(至少)不应该为每个主要路径路径设置不同的存储/状态吗?

我认为路由应该是某种无状态和独立的,这意味着如果我直接访问我的一个链接,它应该可以工作,并且不会知道其他兄弟路由。我应该把它反映给我的商店吗?

编辑

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

4

1 回答 1

2

验证以前路由的状态不会持续存在的可能解决方案之一:

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

例如CLEAN_STATE从发送componentWillUnmount。您应该在顶级 reducer 中捕获此事件,并从中返回初始状态。为此,您可以手动调用所有嵌套的减速器undefined作为状态参数。在这种情况下,每个 reducer 都会返回它的初始状态。

于 2016-05-08T08:08:49.033 回答