【问题标题】:What does a state mean in Angular application?Angular 应用程序中的状态是什么意思?
【发布时间】:2019-06-25 05:53:05
【问题描述】:

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

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

简单的状态是什么意思?需要一些简单的例子来理解这个概念。

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

【问题讨论】:

    标签: angular rxjs ngrx


    【解决方案1】:

    简单地说,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。

    更新:这些问题可能有用

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

    【讨论】:

    • 谢谢!这将帮助我在 NgRx 中起步。
    猜你喜欢
    • 1970-01-01
    • 2011-08-15
    • 2018-07-05
    • 1970-01-01
    • 2013-08-30
    • 1970-01-01
    • 2011-06-18
    • 2017-06-21
    • 2012-01-18
    相关资源
    最近更新 更多