【问题标题】:designing redux state tree设计redux状态树
【发布时间】:2016-09-14 06:12:45
【问题描述】:

我目前正在学习 Redux,我或多或少地掌握了基本概念。我了解如何使用动作和减速器以及所有这些。我正在努力理解如何正确设计状态树。我了解应该/不应该在应用程序状态中存储什么、何时可以使用组件状态、处理状态更改的最佳方式等细节。

是否有任何人可以推荐的好的教程或博客来了解设计状态的最佳实践?

【问题讨论】:

  • 我使用鸭子模式github.com/erikras/ducks-modular-redux 并将每个状态都保存在 redux 中。到目前为止,它对我来说一直运行良好,这样我可以 100% 确定我的状态/错误来自哪里。

标签: javascript reactjs redux react-redux


【解决方案1】:

对此有很多不同的意见。这就是我所做的。

  1. Reducers - 保存处理我的数据模型的东西(通常是数据库中的任何东西),需要保存并稍后使用或跨组件使用

  2. LocalState (react setState) - 在与用户输入和交互相关的单个组件中处理 ui 元素

所以,如果我正在模拟对这个问题的回应。 Redux 商店会有

store = {
  session: { token: 'randomUid' }
  user: { name: 'Austio' }
  question: { id: 37288070 }
}

当我选择要在其中输入值的文本框以创建此问题的答案时,将从该框中处理输入,这将设置 answerText 的状态。

什么时候为表单提交处理,我会根据成功发送诸如 NEW_ANSWER 之类的带有 questionId 和答案的东西,这样我就可以将它存储在商店中,以便在我需要的任何地方使用。

我最好的建议是直接开始编程,如果没有这些,使用 redux/react 很难找到你偏好的边缘。

【讨论】:

  • "LocalState (react setState) - 在与用户输入和交互相关的单个组件中处理 ui 元素..." 我见过人们也采用这种方法,但是,我绝对认为这种状态也很重要,我把它放在商店里。表单数据、突出显示的内容、鼠标状态等——全部!辩论我观察到的状态变成了滑坡。它可能会导致困难并减少 redux 提供的大量价值,恕我直言。不过这更容易!
  • 有趣的观点,最终做任何对你来说更自然的事情,对我来说,存储在全局意义上无关紧要的本地状态会使应用程序更难推理。我建议看看其他人的想法。此外,我的观点来自一个由 8 名开发人员组成的前端团队,他们在一个相当大的系统上。这是一个很好的讨论github.com/reactjs/redux/issues/1287
【解决方案2】:

我强烈建议在 egghead.io 上查看 Dan Abramov(Redux 的创建者)的教程 https://egghead.io/courses/getting-started-with-redux

他将带您构建一个简单的待办事项应用程序,但在整个课程中真正强调最佳状态构建实践。

【讨论】:

    猜你喜欢
    • 2020-07-24
    • 2018-08-17
    • 1970-01-01
    • 2017-07-20
    • 2016-09-29
    • 2021-11-06
    • 1970-01-01
    • 2016-10-30
    • 1970-01-01
    相关资源
    最近更新 更多