【发布时间】:2019-06-25 05:53:05
【问题描述】:
我是 NgRx 的新手,正在阅读它的文档。但是,一开始,我遇到了以下句子:
状态是一个单一的、不可变的数据结构。
简单的状态是什么意思?需要一些简单的例子来理解这个概念。
我是否需要学习 Flux 和 Redux 才能理解这些概念?
【问题讨论】:
我是 NgRx 的新手,正在阅读它的文档。但是,一开始,我遇到了以下句子:
状态是一个单一的、不可变的数据结构。
简单的状态是什么意思?需要一些简单的例子来理解这个概念。
我是否需要学习 Flux 和 Redux 才能理解这些概念?
【问题讨论】:
简单地说,ngrx(或 redux,或其他状态管理系统)中的状态是在单个时间点描述您的系统的方式。
您可以将其视为一个简单的 javascript 对象,在某一时刻代表您的整个应用程序。让我们举一个todos 应用程序的简单示例,我可以在其中标记已完成项目(通过已完成标志)或选定项目(按索引)。可能的状态可能如下所示:
{
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
}
因此,状态是您的应用程序逻辑在单个时间点的表示。视图实现取决于您 - Angular、React 和移动应用程序可以共享相同的状态并使用不同的视图层。
某些状态管理系统要求状态为immutable,这意味着在todos 示例中我不会简单地更改我的状态,而是创建一个全新的状态来表示系统。
对此有multiple reasons,但也许最明显的一点是,这种品质有助于网络系统识别状态的变化,并相应地改变视图。
NgRx 是一个特定于角度的状态管理系统。如NgRx页面所述:
NgRx Store 为受 Redux 启发的 Angular 应用程序提供响应式状态管理。
因此,一个很好的说明是学习redux(不变性规则来自redux)。您可以将 NgRx 视为基于 redux 的状态管理,具有 RxJS 的强大功能。我建议拼命学习每个概念,然后再学习 NgRx。
更新:这些问题可能有用
【讨论】: