【问题标题】:React Redux reset dataReact Redux 重置数据
【发布时间】:2018-06-18 19:50:20
【问题描述】:

我最近开始使用 React 和 Redux,但有 2 个问题我自己无法完全解决。

  1. 我已经实现了登录和注册表单,当在线搜索示例时,我发现了一些示例,其中键入的用户名和密码没有使用 Redux 处理,而是存储在组件的状态中(好像应用程序是一个纯 React 应用,没有 Redux)。

在我的登录表单中,我通过 Redux 使用 reducer 处理所有内容,是我错了还是随机示例错了?

  1. 关于 Redux - 我们以这个 reducer 为例: https://gist.github.com/avrahams1/ea74cfa7a9361fdd55ad4bea9d59d07e (我无法让 SO 的代码功能工作:( )。

它是服务器调用教师 API 的 reducer,从服务器获取所有教师。 如您所见,有 4 种状态 - 未调用、等待来自服务器的应答、成功(有数据)、失败(有错误)。

我的问题是 - 在每种情况下我都必须明确重置其他数据,因为否则一旦“加载”标志设置为 true,它就永远不会设置为 false,错误也是如此。 即使数据到达我的组件卡在“加载”上,我在这里做错了吗? 否则我应该如何重置加载和错误字段等内容?

谢谢,阿维。

【问题讨论】:

    标签: reactjs redux react-redux


    【解决方案1】:
    1. 你和你看到的例子都没有错。 See here 以获得更详细的答案。仅仅因为您使用 Redux 并不意味着您处理的每一条数据都必须存储在 Redux 中。在您看到的示例中,其作者可能认为将用户名和密码保持在全局应用程序状态是没有用的,而只是想使用本地状态来实现受控输入。

    2. 明确状态是工作状态机的基础。详细说明存储在全局状态中的每条数据应该如何响应任何给定的动作/转换是没有错的。恰恰相反,真的。这确保对于任何给定的输入(即当前状态、动作类型和动作负载),结果将始终完全相同——这是 Redux 背后的核心概念。我认为您在 gist 中发布的代码没有任何问题。

    【讨论】:

    • 感谢您的快速回复。如果我没有使用 Redux 来处理我的所有数据,这难道不会完全违背使用 Redux 的目的吗?据我所知,您“忍受”了 Redux 极其乏味的样板,以集中所有数据并享受“时间旅行”和轻松重现错误的能力,还是我完全弄错了?我知道使用状态也可以正常工作,我问的是思路。
    • 不客气。不,我认为不会,尤其是当相关数据与您的整个应用程序无关时。 Redux 对于 (1) 在应用程序级别管理状态特别有用(这意味着任何组件都可以 (a) 订阅/侦听对状态中保存的数据的更改,以及 (b) 触发可能修改状态中保存的数据的操作)和( 2)实现状态变化的可预测性。如您所见,您的问题涉及 imo,Redux 背后的两个核心概念。干得好!
    • 不,同样,您评论中的第二个陈述是完全准确的。但是在您的示例中考虑这一点:用户的用户名和密码在输入时对应用程序有任何价值吗?不是真的,不。我们可能不希望在任何时候在应用程序状态中拥有这些值,也许我们希望存储一个令牌,该令牌将在用户登录时返回。
    猜你喜欢
    • 2021-08-28
    • 1970-01-01
    • 2022-01-11
    • 2016-06-30
    • 2020-01-16
    • 1970-01-01
    • 1970-01-01
    • 2018-11-11
    • 2017-08-12
    相关资源
    最近更新 更多