当前位置: 首页 > 知识库问答 >
问题:

React Redux路由器-我应该为所有页面/组件使用一个状态/存储吗?

山翼
2023-03-14

我正在使用React-Redux,在阅读了React-router-Redux和Redux-router之后,在阅读了Dan Abramov的答案之后,我决定使用“香草”React-router(此时我不关心时间旅行等)。

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

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

编辑

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

共有1个答案

戚宏浚
2023-03-14

关于验证前路线状态是否持续的可能解决方案:

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

例如,从组件中发送CLEAN\u STATE将卸载。您应该在顶级reducer end中捕获此事件,并从中返回初始状态。要做到这一点,您可以使用undefined作为状态参数手动调用所有嵌套的约简器。在这种情况下,每个减速器将返回其初始状态。

 类似资料:
  • 问题内容: 说我有一个简单的切换: 当我单击按钮时,颜色组件在红色和蓝色之间切换 我可以通过执行以下操作来达到此结果。 index.js container.js action_creator.js reducer.js 但这是很多代码的地狱,我可以用jQuery,某些类和某些CSS在5秒钟内完成一些工作。 所以我想我真正要问的是,我在这里做错了什么? 问题答案: Redux主要用于“应用程序状态

  • 反应路由器:链接和路由不传递状态到组件 我正在用React、Redux和React路由器构建一个在线购物应用程序。在主页上,显示所有项目。我希望用户能够点击一个图像,并被带到一个页面,其中包含该项目的项目详细信息。 下面是我如何做到这一点的: 在App.js中,我使用BrowserRouter、Route和Switch进行路由 这看起来很简单,我在网上看到了很多关于这一点的讨论。以下是我已经尝试过

  • 我正在使用React制作一个动态网页。我正在使用React Routers中的一个交换机组件,根据用户的需要,将主页更改为其他各种页面。我希望通过以下路由创建新帐户: 主页 我的问题在于从第三个创建帐户页面返回主页或登录页面。我可以创建链接,使我从第1页 最初,我在createaccount页面中有一个switch语句,呈现三个独立的组件。如果我在这个switch语句中设置了route home,

  • 我写了以下代码: 我只使用了一个useState在一个对象中存储“name”、“link”、“error”等属性。因为我想将FormObj和ValidateLink的逻辑保持在一起。所有三个属性仅使用一个useEffect。因此,我认为最好将所有三个属性都保留在useState中,而不是创建3个不同的useState。 但是我的经理和技术架构师告诉我要为每个属性创建3个useState,一个use

  • 根据这个例子,我试图在React路由器v4中创建一个经过身份验证的路由。为后代显示代码: 我的身份验证状态()在减速器中初始化为空对象,它来源于Redux存储。这就是我的pp.js的样子: 问题是状态以未定义的方式开始,然后,一旦安装了路由器组件,它将状态更新为。然而,这有点晚了,因为用户已经被重定向回登录页面。我还尝试用替换生命周期方法,但这也没有解决问题。 你有什么建议? 更新1:我解决这个问

  • 问题内容: 我有正常路线 使用from 。 奇怪的是,这个组件很长一段时间都没有出现问题,但是现在当我用说的时候,它无法在travis- ci上编译 我在我的PrivateRoute组件中设置了此状态,这是带有重定向的非常标准的 如何更新要包含的对象的类型 编辑: 解决方案是添加 复制package.json之后,将其复制到我的Dockerfile中。 问题答案: 看起来您没有对软件包使用锁定文件