Reactjs Redux:多个路由之间的处理状态
我必须说,这是一种管理应用程序状态的好方法。但我有几个问题,我似乎在互联网上找不到答案 跨多条路线处理您的状态,这意味着: 我有我的状态,看起来像这样:Reactjs Redux:多个路由之间的处理状态,reactjs,react-router,redux,Reactjs,React Router,Redux,我必须说,这是一种管理应用程序状态的好方法。但我有几个问题,我似乎在互联网上找不到答案 跨多条路线处理您的状态,这意味着: 我有我的状态,看起来像这样: { user: {}, routing: {} } todos: todo1: name: String completed: boolean ... threads: thread1: participants: [ ... ] messages: [ ... ] ... ev
{
user: {},
routing: {}
}
todos:
todo1:
name: String
completed: boolean
...
threads:
thread1:
participants: [ ... ]
messages: [ ... ]
...
events:
event:
date: Date
todos: [ 'todo1', 'todo2' ]
...
users:
...
...
我有几个不同的页面,这意味着它添加了(例如)todo
,这只在/todo
路径中起作用。这样的事情怎么处理?或者我甚至不在redux中包含这个。我想我可以为每条路线添加一个对象,但这会很快变得混乱。除非这是建议的路线
我正在寻找这个问题的正确答案。我只是不在Redux中包含这些值,还是只为每个路由创建值,并在执行时嵌套这些值?在这一点上,任何东西都是有帮助的,因为我已经没有什么想法了
谢谢大家
编辑 只是为了回答评论中发生的事情。这就是我所在的州:
{
"routing": {
"changeId": 1,
"path": "/",
"state": null,
"replace": false
},
"todos": {
"visibilityFilter": "SHOW_ALL",
"todos": [
{
"text": "Use Redux - This is the initial state.",
"completed": false,
"id": 0
}
]
},
"requests": {
"isFetching": false,
"data": {}
}
}
几乎直接从redux提取,路由对象来自
react router
,因此这让我相信我真的不需要它。但我只是想弄清楚如何保持事情的整洁,以及如何为一个巨大的应用程序构建我的操作/简化程序。redux的美妙之处在于简化程序的可组合性。这意味着您可以将各种信息存储在其中,同时完全分开处理。这里有一些过于简单和笼统的建议
todos
属性可能存在,但不在需要它的路由上(但可能未填充){
user: {},
routing: {}
}
todos:
todo1:
name: String
completed: boolean
...
threads:
thread1:
participants: [ ... ]
messages: [ ... ]
...
events:
event:
date: Date
todos: [ 'todo1', 'todo2' ]
...
users:
...
...
我们可能有一个“todos”路线,我们关注todos,但这只是一些领域数据的表示。TodoList
组件需要数据并连接到存储以获取所需的数据。它出现的路由可能会触发请求数据的操作,也可能完全来自其他地方。浏览另一条路线会再次启动该过程,但仅适用于需要的任何数据
redux的美妙之处在于还原剂的可组合性。这意味着您可以将各种信息存储在其中,同时完全分开处理。这里有一些过于简单和笼统的建议
todos
属性可能存在,但不在需要它的路由上(但可能未填充){
user: {},
routing: {}
}
todos:
todo1:
name: String
completed: boolean
...
threads:
thread1:
participants: [ ... ]
messages: [ ... ]
...
events:
event:
date: Date
todos: [ 'todo1', 'todo2' ]
...
users:
...
...
我们可能有一个“todos”路线,我们关注todos,但这只是一些领域数据的表示。TodoList
组件需要数据并连接到存储以获取所需的数据。它出现的路由可能会触发请求数据的操作,也可能完全来自其他地方。浏览另一条路线会再次启动该过程,但仅适用于需要的任何数据
所以,为了让我头脑清楚,只在商店里保留与业务相关的物品。这是有道理的,是的,缓存失效与此无关,哈哈。但是谢谢你!这更有意义,我只想把它分开。我只是记住了一个可以存储大量数据的应用程序。我说的是有子路由的30多页应用程序,等等。这就是我开始担心的地方……我不完全确定你所说的“业务相关项目”是什么意思,但如果你指的是“不是用户体验的状态”,那么是的(可能偶尔会有例外)。页面的数量或路由的深度与此无关,而是侦听器的数量,无论如何,每次只应限于一条路由。所以我可以帮你,你特别担心什么?代码复杂性、脆弱性、内存或其他什么?啊!我读到Immutable.js在Redux主要用于状态管理的设置中几乎是必需的。我将阅读如何将其集成,我正在开发一个小工具包,当涉及到如何工作以及如何不工作时,我会对它进行一些调整。我了解基本的生命周期以及其他一些东西,但第二次关注这一点肯定会有所帮助。谢谢你,伙计!我来看看。我不同意第3点“在存储中缓存数据”。Redux store表示应用程序的状态,若将其用作缓存,则会将单个组件状态泄漏到全局Redux store,调度操作无论如何不会影响应用程序,它只影响1个组件。如果您在那里添加路由,如果您在正确的路由上,则分派操作只影响一个组件。将redux存储作为缓存存储意味着您的redux存储