在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));
}
}
这基本上解决了基于流量和基于Redux的模式(如ngRx和Redux本身)试图解决的同一个问题:我们如何更新共享状态,以便视图组件能够对更改做出react ,并始终能够显示真实的当前状态.但它比那些模式更简单.
我的问题是:这种模式有一个已知的名称吗?我们在使用像ngRx这样的库(甚至react中的redux)来覆盖这种模式的任何限制方面有什么优势吗?