javascript - Redux 或简单的 React 来处理导航
问题描述
我对 React 和 Redux 还很陌生,目前我正试图了解如何通过 UI 共享状态。
我有一个非常简单的用例。
想象一个具有三列的容器:
- 带有四个按钮的左侧菜单
- 中心内容部分
- 一个包含其他内容的正确容器
当我单击四个按钮之一时,我希望发生三件事:
- 按钮上的类已更新,因此它具有边框
- 其他按钮上的类已更新,因此如果在删除其边框类之前已单击它们
- 更新了中间部分的内容。此内容需要从后端(Django Rest)获取数据
以下是我的问题:
- 我应该将此交互分为仅 UI 关注点和数据驱动关注点还是使用单一状态处理两者?
- 因为按钮共享一个父组件,但它们不与中央组件共享,如果我不想在容器的最顶层定义状态,我会更好地使用 Redux 吗?
- 因为我是新手,而且 Hooks 似乎是要走的路,所以我尝试使用钩子而不是类,分离组件和容器是否仍然有意义?
解决方案
你可以使用 react-router-dom 库来实现你想要的。对于您的左侧菜单,您可以在 css 中创建活动类,然后检查具有location.pathname
react-router-dom 属性的当前路由,如果是该按钮,则为其设置活动类。对于您的主要部分,您可以在 useEffect 挂钩中获取数据。我认为将数据和 UI 分开很好,但对于按钮,我说的很好。您可以将数据存储在主要部分的 redux 中。
推荐阅读
- vue.js - 如何访问 vue-test-utils 中的插槽组件/模板?
- c++ - 为什么右值不能绑定到非 const 左值引用,除了写入临时值没有效果?
- mysql - 动态降低大小写列值
- angular - 未捕获的错误:模块“AppModule”声明的意外值“未定义”
- google-app-maker - 如何在两个应用程序制造商应用程序之间共享数据?
- maven - 如何链接其他 maven pom?
- speech-to-text - IBM Watson SpeechToText 标点符号
- java - log4j2 - StatusLogger 找不到 Log4j 2 配置文件。使用默认配置
- yahoo-api - 雅虎 OAuth 2.0 登录故障
- python - 从py创建exe在执行时默认传递参数?