我正在使用 React + Redux,在阅读了 react-router-redux 后和 redux-router ,并阅读后 Dan Abramov's answer ,我决定使用“vanilla”react-router(此时我不关心时间旅行等)。

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

我认为路由应该是某种无状态和独立的,这意味着如果我直接转到我的链接之一,它应该可以工作,并且不会意识到其他同级路由。我应该将其反射(reflect)给我的商店吗?

编辑

经过更多思考,我想使用不同的 reducer +“CombineReducers”就能解决问题。我唯一需要验证的是,导航时以前的路线状态不会持续

请您参考如下方法:

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

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

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


评论关闭
IT虾米网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!