【问题标题】:Why should we use Redux? How is it helping us? [closed]我们为什么要使用 Redux?它对我们有什么帮助? [关闭]
【发布时间】:2020-07-14 13:41:16
【问题描述】:

由于 redux 在 1 个地方(即 root-reducer)拥有所有状态的大型存储,如果我假设 App.js 中的每个组件都是所有组件的父级,它与存储所有状态之类的东西有什么不同(然后当然是把你的道具钻给孩子们)

现在有些人可能会说 prop Drill 不好,我明白了,但它是 Redux 解决的唯一问题吗?

更重要的是,

比如组件更新会发生什么?如果我的 mapStateToProps 只是使用 cart-item-reducer 的状态,Redux 是否会重新渲染所有组件? (因为在 App.js 中这样做肯定会)

dispatch 例如,通过传递给它的操作向每个 reducer 发送垃圾邮件,就像更改父组件的状态会重新渲染每个子组件一样?

我觉得很难理解

【问题讨论】:

  • 从 useReducer 获得的状态不会触发重新渲染。 codesandbox.io/s/eventemitter-and-react-84eey?file=/src/…
  • 我真的很想在我的帖子中听到您的意见(我认为您的帖子与我的帖子有关):stackoverflow.com/questions/62827419/…
  • 我举了一个 User Reducer 的例子,就像 Cart Item Reducer 之类的,而不是 useReducer @bravemaster
  • 我现在更改了我的示例:) 以避免混淆
  • 您使用 Redux 的原因是,与任何框架一样,它解决了很多问题并提供了有用的功能,否则您必须自己处理。就是这样。当然,您可以将所有内容存储在 App.js 中。但是任何知识渊博的开发人员都可能将其视为一种幼稚的实现,并且几乎肯定会编写一个模块来管理状态,他们可以跨项目使用它。但是,如果您的网站只是一个小小的状态(如用户对象),那么根据我的个人经验,Redux 就显得有点矫枉过正了。将您的状态存储在 App.js 中并继续前进。需要时移至 Redux。

标签: javascript reactjs redux react-redux


【解决方案1】:

Redux 背后的核心思想不是绕过组件钻取。 Redux 背后的想法是作为持久存储的高级包装器。

Redux 的替代方案是不在 App.js 中存储状态。在 App.js 中存储状态是在 App.js 中存储状态的替代方法(实际上,如果这是您使用 Redux 的方式,那么您使用变量的方式过于复杂)。

Redux 的替代方案是手动将数据存储在 Localstorage 或 Cookies 或 SQLite 等中。Redux 允许您简单地使用持久性存储,而无需担心底层技术细节。

什么是持久存储?这是当您的数据保存在磁盘上并且在用户退出网络浏览器后仍然存在时。

【讨论】:

  • “在 App.js 中存储状态是在 App.js 中存储状态的替代方法”是吧?
【解决方案2】:

你是对的,从单一事实来源的角度来看,它会是相似的,但 redux 提供的更多。例如,您有更新商店的标准化方式。

更重要的是,您意识到将 props 从根组件传递到大多数嵌套组件可能会很糟糕。在更大的应用程序中,开发人员经常忘记传递其中的一些,并且很难找到缺少哪个级别的道具。 Redux 有很多开发者工具可以帮助你观察 store 的变化。如果没有 redux,就很难监控这些变化。

也许它不是 redux 的一部分,但它也对您提到的重新渲染进行了优化。 redux 有一个名为 reselect https://github.com/reduxjs/reselect 的插件,如果不需要,它不会进行任何重新渲染/重新计算。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-27
    • 1970-01-01
    • 1970-01-01
    • 2013-09-03
    • 1970-01-01
    相关资源
    最近更新 更多