这种常见的 rxjs 状态管理模式有名称吗?它有限制吗?

Is there a name to this common state manegement pattern with rxjs? Does it have limitations?

在 Angular 应用程序中,我们通常会这样做来管理共享状态:

import { BehaviorSubject } from 'rxjs';

interface User {
  id: number;
}

class UserService {
  private _users$ = new BehaviorSubject([]);

  users$ = this._users$.asObservable();

  deleteUser(user: User) {
    const users = this._users$.getValue();
    this._users$.next(users.filter(user => user.id !== user.id));
  }


  addUser(user: User) {
    const users = this._users$.getValue();
    this._users$.next([...users, user]);
  }


  updateUser(updatedUser: User) {
    const users = this._users$.getValue();
    this._users$.next(users.map(user => user.id === updatedUser.id ? updatedUser : user));
  }
}

这基本上解决了同样的问题,从根本上说,基于 Flux 和基于 Redux 的模式(比如 ngRx 和 redux 本身)试图解决:我们如何更新共享状态,以便视图组件可以对变化做出反应,将能够显示真实的当前状态。但它比那些模式更简单。

我的问题是:这个模式有一个已知的名字吗?我们在使用像 ngRx(或者甚至是 React 中的 redux)这样的库来覆盖这种模式的任何限制方面有什么优势吗?

这是一个有效的模式,这也是我们引入 ngrx/component-store (https://ngrx.io/guide/component-store) 的原因。

文档还提供了 pro/cons 两种“方式”:https://ngrx.io/guide/component-store/comparison