状态在Angular应用程序中意味着什么?

时间:2019-06-25 05:53:05

标签: angular rxjs ngrx

我是NgRx的新手,正在阅读其文档。但是,一开始我遇到以下句子:

  

状态是单个不变的数据结构。

状态用简单的话表示什么?需要一些简单的例子来理解这个概念。

我需要学习Flux和Redux才能理解这些概念吗?

1 个答案:

答案 0 :(得分:2)

简单地说,在ngrx(或redux或其他状态管理系统)中的状态是在单个时间点描述系统的方式。

您可以将其视为一个普通的javascript对象,它一次可以代表整个应用程序。让我们举一个todo的应用程序的简单示例,其中我可以标记一个完成的项目(通过完成的标志)或选定的项目(通过索引)。可能的状态可能看起来像这样:

{
  items: [
    { text: 'Wash Car', completed: false},
    { text: 'Write Code', completed: true}
  ],
  selectedIndex: 0
}

如果我决定选择第二个索引,则我的状态未来状态将如下所示:

{
  items: [
    { text: 'Wash Car', completed: false},
    { text: 'Write Code', completed: true}
  ],
  selectedIndex: 1
}

因此,状态表示您在单个时间点内的应用逻辑。视图的实现取决于您-角度,反应和移动应用程序可以共享相同的状态并使用不同的视图层。

某些状态管理系统要求状态为immutable,这意味着在todos示例中,我不会简单地更改状态,而是创建一个全新的状态来表示系统中的更改。

multiple reasons,但也许最明显的是这种质量有助于Web系统识别状态的变化并相应地更改视图。

NgRx是特定于角度的状态管理系统。如NgRx页中所述:

  

NgRx Store为受Redux启发的Angular应用程序提供反应状态管理。

因此,一个很好的陈述就是学习redux(不变性的规则来自redux)。您可以将NgRx看作基于RuxJS的基于Redux的状态管理。我建议拼命学习每个概念,然后再学习NgRx。

更新:这些问题可能有用

  1. Why should objects in Redux be immutable?
  2. Redux: why using Object.assign if it is not perform deep clone?