React + Redux + Router - 我应该为所有 pages/components 使用一个 state/store 吗?
React + Redux + Router - should I use one state/store for all pages/components?
我正在使用 React + Redux,在阅读了 react-router-redux and redux-router, and after reading 之后,我决定使用 "vanilla" react-router(此时我不关心时间旅行等)。
剩下的唯一悬而未决的问题是如何跨不同路由处理状态。每个路由子树在我的应用程序中都可以是不同且独立的部分(尤其是当它变大时)。让一个商店处理所有路由/页面仍然是一个好习惯吗?我不应该(至少)为每个主要路线路径设置不同的 store/state 吗?
我认为路由应该是某种无状态和独立的,这意味着如果我直接转到我的一个链接,它应该可以工作,并且不会知道其他同级路由。我应该反映到我的商店吗?
编辑
经过更多思考,我猜想使用不同的减速器 + "CombineReducers" 就可以了。唯一需要我验证的是,以前的路线状态在导航时不会持续
验证先前路由状态不会持续存在的可能解决方案之一:
当用户在页面之间导航时,每个路由中的顶级组件正在安装和卸载。您可以使用他们的生命周期方法发送任何 redux 事件来清理您的状态。
例如从 componentWillUnmount
发送 CLEAN_STATE
。您应该在顶级减速器结束 return 初始状态中捕获此事件。为此,您可以使用 undefined
作为状态参数手动调用所有嵌套的 reducer。在那种情况下,每个减速器将 return 它的初始状态。
我正在使用 React + Redux,在阅读了 react-router-redux and redux-router, and after reading
剩下的唯一悬而未决的问题是如何跨不同路由处理状态。每个路由子树在我的应用程序中都可以是不同且独立的部分(尤其是当它变大时)。让一个商店处理所有路由/页面仍然是一个好习惯吗?我不应该(至少)为每个主要路线路径设置不同的 store/state 吗?
我认为路由应该是某种无状态和独立的,这意味着如果我直接转到我的一个链接,它应该可以工作,并且不会知道其他同级路由。我应该反映到我的商店吗?
编辑
经过更多思考,我猜想使用不同的减速器 + "CombineReducers" 就可以了。唯一需要我验证的是,以前的路线状态在导航时不会持续
验证先前路由状态不会持续存在的可能解决方案之一:
当用户在页面之间导航时,每个路由中的顶级组件正在安装和卸载。您可以使用他们的生命周期方法发送任何 redux 事件来清理您的状态。
例如从 componentWillUnmount
发送 CLEAN_STATE
。您应该在顶级减速器结束 return 初始状态中捕获此事件。为此,您可以使用 undefined
作为状态参数手动调用所有嵌套的 reducer。在那种情况下,每个减速器将 return 它的初始状态。