【问题标题】:Redux or simple React to handle navigationRedux 或简单的 React 来处理导航
【发布时间】:2020-03-28 16:49:07
【问题描述】:

我对 React 和 Redux 还很陌生,目前我正在努力思考如何通过 UI 共享状态。

我有一个非常简单的用例。

想象一个包含三列的容器:

  1. 带有四个按钮的左侧菜单
  2. 中心内容部分
  3. 包含其他内容的正确容器

当我点击四个按钮之一时,我希望发生三件事:

  1. 按钮上的类已更新,因此它具有边框
  2. 其他按钮上的类已更新,因此如果在删除其边框类之前已单击它们
  3. 更新了中间部分的内容。此内容需要从后端 (Django Rest) 获取数据

这是我的问题:

  1. 我应该将此交互分为仅 UI 关注点和数据驱动关注点,还是使用单一状态处理两者?
  2. 由于按钮共享一个父组件,但它们不与中心组件共享,如果我不想在 Container 的最顶层定义状态,是否最好使用 Redux?
  3. 因为我是新手,而且 Hooks 似乎是要走的路,所以我尝试使用钩子而不是类,分离组件和容器是否仍然有意义?

【问题讨论】:

    标签: javascript reactjs redux react-hooks


    【解决方案1】:

    你可以使用 react-router-dom 库来实现你想要的。 对于您的左侧菜单,您可以在 css 中创建活动类,然后使用 react-router-dom 的 location.pathname 属性检查当前路由,如果是针对该按钮,则为其设置活动类。 对于您的主要部分,您可以在 useEffect 挂钩中获取数据。 我认为将数据和 UI 分开很好,但对于按钮,我说的很好。 您可以将数据存储在主要部分的 redux 中。

    【讨论】:

    • 你能有几个位置实例吗?我将在左侧菜单中有另一组按钮,用于更新中间部分的另一部分。在这种情况下,它可能会发生冲突,因为如果我没记错的话,路径名将是唯一的,并且由所有这些按钮集共享。
    • @DataBrown yes location.pathname 基于 url。随着您添加的新信息,我认为 redux 是更好的解决方案,或者您可以将 url 参数用于其他按钮集。
    猜你喜欢
    • 2020-07-18
    • 1970-01-01
    • 2018-04-08
    • 1970-01-01
    • 1970-01-01
    • 2018-01-01
    • 1970-01-01
    • 2016-08-14
    • 2016-10-27
    相关资源
    最近更新 更多