【问题标题】:When should I use Redux in my react application?我什么时候应该在我的 react 应用程序中使用 Redux?
【发布时间】:2019-06-19 04:17:15
【问题描述】:

我正在开发一个 React Web 应用程序,或者公司购买了一个管理仪表板面板来节省时间。在这个面板中,他们使用 redux 来处理状态并将所有设置参数存储到 redux ...

但我真的对每个用例都使用 readux 感到困惑!

我所有的请求和状态都是基于组件的,不是全局的,这些对于在这个应用程序的其他组件中使用不是必需的!

例如加载游戏列表我有这个代码:

componentDidMount() {
    this.setState({
      loading: true
    });
    http._GET('/game/getAllGames')
    .then(response => {
      this.setState({
        loading: false
      });
      this.props.dispatch(gamesListAction(response.data.result.games));
    });
  }

在这种情况下,我只在游戏列表页面中使用响应和列表。所以我认为我将 response.data 存储到 redux 中然后通过 connect 和其他进程获取所有数据是不合逻辑的......

或者其他例子,对于插入表单,我永远不需要存储表单插入或 API 响应,因为它是插入而不是从 API 获取数据!

我读过关于 redux 的文章,但我认为 redux 并不适合所有应用程序和用例,我不应该存储对 redux 的一次性响应。

你怎么看待这件事?

谢谢

【问题讨论】:

  • 结论,我认为我们最好不要对每个项目都使用redux并首先检查或用例和项目结构!如果我们想存储全局状态或缓存状态,redux 是理想的,但对于简单的使用和每个组件的局部状态,这不是很好,这是一个问题,给我们带来了复杂性......祝你好运

标签: javascript reactjs redux


【解决方案1】:

是的,你说得对,redux 并不适合每个应用程序,据我所知,redux 或状态管理主要用于在某些操作发生时向用户显示之前的状态而不是空的状态

这里稍微详细解释一下何时使用redux https://medium.com/@fastphrase/when-to-use-redux-f0aa70b5b1e2

编码愉快!

【讨论】:

    【解决方案2】:

    reduxjs FAQ 描述得最好。

    一般来说,当您有合理数量的数据随时间变化时使用 Redux,您需要单一的事实来源,并且您发现将所有内容保持在顶级 React 组件状态之类的方法已经不够用了.

    Redux 只不过是一个状态管理工具,你需要更有说服力的理由来使用它: 就您而言,首先:

    • React 的 setState 会随着需求的增长而使组件膨胀 更难维护。将状态管理分离到reducer中 很好地重构并使其更具可读性。
    • 缓存组件状态,例如,如果您正在使用购物车、渐进式向导。在这种情况下,用户交互中有很多来回会导致状态更改。现在在 redux 中维护您的状态很有意义。
    • 深度嵌套的组件状态和许多道具传递给他们的孩子,随着需求的增长而迅速膨胀。这是一个包含大量包装器组件(尤其是 UI 细节)的经典场景。更好的方法是重构并直接将低级组件连接到 redux(转换为 容器。阅读:presentational-and-container-components
    • 应用程序状态映射到多个容器组件。例如,如果您让 getAllGames 加载状态在某个地方的某个 progressive-loader-component 中表示在你的应用程序中。使用 redux 将减轻您在这些组件之间共享数据的痛苦。
    • 在构建可能从任何地方进行交互的根级组件时很有用。就像您的用户帐户组件、模式、警报、加载器

    您会意识到,您正在编写一些带有动作和化简器的样板代码。尽管加班比反应状态管理要好得多,反应状态管理会在有状态的组件中逐渐变得复杂。

    【讨论】:

    • 我明白了,但是当我在 componentDidMount 中获取和填充 redux 状态时,状态缓存对我来说并不意味着......
    • 我同意。这只是不同的一般场景,在这些场景中,在应用程序中使用 redux 比 react 提供的更有意义。如果您的大多数情况都适合这里,那么它可能是您的不错选择。
    猜你喜欢
    • 2011-03-11
    • 2018-09-09
    • 1970-01-01
    • 1970-01-01
    • 2016-12-16
    • 2010-12-30
    • 1970-01-01
    相关资源
    最近更新 更多