首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Redux州是什么州?

在Redux州是什么州?
EN

Stack Overflow用户
提问于 2017-09-25 12:00:54
回答 6查看 2.3K关注 0票数 4

我已经在谷歌上搜索、阅读和观看过教程,由于某些原因,每个人都希望你知道什么是状态。有些人略为轻描淡写,但并不能真正解释它是什么。最后,对于一个状态的整个解释变得冗长,没有什么真正要指出的,而且由于Redux不一定会做出反应,而且也可以用于角度,如果有人向我和其他也想知道状态是什么的人解释的话,我会非常高兴的(最好是在角度中,举个例子)。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2017-09-25 12:33:39

在Redux州是什么州?

State是一种用于表示对象状态的设计模式。四人帮的行为设计模式之一。它并不是特定于Redux的,它只是存储数据的一个集中的地方。

Redux状态是您的应用程序的上帝。如果您是一个元素,并且想知道您现在是否被单击(例如),您可以询问State。这是一张你的申请在给定时间的照片。

它存储应用程序的所有信息。假设为您的应用程序拍照,它会有一个单击复选框、一个启用下拉列表、一个已禁用的无线电台等等。

状态是一个将所有这些信息作为属性的对象。例如,{ checkboxClicked: true}。通常,对象具有当前状态下应用程序的快照。

当用户采取行动时,通过取消选中复选框,应用程序的状态应该会改变。所以让我们这样做:

代码语言:javascript
运行
复制
{checkboxClicked: false}   // WRONG

状态是不变的。这意味着你不能修改它(你不能修改照片,它属于过去)。

那么我们该怎么办呢?我们注册处理由用户引起的操作的还原器。

在这种情况下,还原器将采取取消选中复选框的操作,并生成一个新的、新的状态,它将与前一个状态完全相同,但名为checkboxClicked的属性除外,该属性现在将被设置为true

替代解释:

状态是您世界的中心(应用程序)。

假设您的应用程序有一个复选框。是否单击此元素的信息可以在状态对象中建模。想象一下(粗略的直觉):

代码语言:javascript
运行
复制
State = {checkboxClicked: false};

以上可能是应用程序的初始状态。

当用户选中该复选框时,角分派一个操作。信息必须在你的状态中更新,但不是在这个特定的状态,因为这个状态已经消失了,它属于过去!

您的应用程序现在有一个复选框单击。你必须拍一张新照片来描绘新的信息。状态是不可变的,您不能修改它。换句话说,不允许您执行此State.checkboxClicked = true;

你通过减速机产生一个新的,新鲜的状态。Reducer是一个处理操作的函数。在这种情况下,它将创建一个State对象,其中每个属性都将与以前相同,只有checkboxClicked将被设置为“`true”。

这将是应用程序的当前状态,直到用户采取行动为止。

票数 7
EN

Stack Overflow用户

发布于 2017-09-25 12:05:48

好的问题,我们需要状态,因为没有它,我们将如何保存动态应用程序所发生的事情?

想想看,如果用户点击一个按钮,应用程序如何知道下一步该做什么?在单击 - 之前,我们有一个默认状态,在用户单击按钮之后,我们将状态更改为表示接下来会发生什么。

例:我们有一个起始数为零的计数器。初始状态为零。用户单击按钮。嗯,…接下来是什么?更重要的是,增加或减少数量,我们将如何将这些部分整合在一起?我们需要某种动态机制来表示我们的行为,并将其转化为具有代表性的反馈/数据。我们称它为国家。一旦你使用状态 - ,你就不能没有它。

票数 2
EN

Stack Overflow用户

发布于 2017-09-25 12:18:33

Redux中的状态是一个JavaScript对象,其中应用程序的内部状态存储为其属性,例如哪个用户被登录。登录后,应用程序的用户可能导航到应用程序中的不同页面,但您需要记住该用户是谁。该信息是应用程序内部状态的一部分。

然后,通过还原器修改状态,而不是让它们直接执行操作,结果是应用更改的前一个状态的副本。例如,如果用户登录,则可能会发出

代码语言:javascript
运行
复制
var action = { type = 'USER_LOGIN', payload = 'john' };

它被发送到userReducer。然后,该还原器可以将状态的loggedInUser属性从'jane'更改为'john'。使用state的想法是为所有这些信息提供一个中心位置,这样您就可以从应用程序中的任何地方访问这些数据。

将状态看作是一个全局变量的集合,您可以在任何时间、任何地点读取这些变量,但是您只能通过分派操作来写入这些变量。如果你能随心所欲地给他们写信,这很快就会变得一团糟。通过强制您分派操作,应用对这些属性的更改的顺序是确定性的,从而减少了应用程序出错的可能性。

由于属性的每个更改都需要经过还原器,所以可以通过在还原器内设置一个断点来查看更改的来源来拦截该更改。如果您可以直接写入状态(全局变量就是这种情况),您将无法知道何时和从何处应用更改,这会导致难以调试的应用程序。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46404739

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档