我们可以在 ngrx 中将实体注册到全球商店吗?那可能吗?
can we register entity to global store in ngrx? is that possible?
如果我们在我们的全球商店实体,那会很好吗?
我有一些 crud 操作,使用 @ngrx/entity 很容易完成,我想把它放在根存储中。
我试过创建一个实体,但是原理图是为 forFeature() 做的。
NgRx 实体基本上是一个字典,具有与 update/read.
匹配的 NgRx 运算符
例如,您始终可以在任何可以存储字符串的存储中保存实体对象。如果你只需要一个实体对象,你可以通过扩展 Store 来实现
export interface State extends EntityState<User> {
...
}
或者您可以像
一样在商店中创建实体对象
export interface State {
users: EntityState<User>;
books: EntityState<Book>;
}
您可以通过两种方式使用适配器。对于扩展版本,将整个 State
传递给适配器。对于第二种方法,将用户 属性 传递给适配器方法,并将结果设置为状态中 属性 的新值。
编辑
要更新实体对象,使用适配器。创建一个适配器并在减速器中使用它。更多关于它的信息和代码示例可以在 https://ngrx.io/guide/entity/adapter
找到
// adapter definition
export const userAdapter: EntityAdapter<User> = createEntityAdapter<User>();
// reducer call for extended state / first version
on(UserActions.setUsers, (state, { users }): State => userAdapter.setAll(users, state)),
如果我们在我们的全球商店实体,那会很好吗?
我有一些 crud 操作,使用 @ngrx/entity 很容易完成,我想把它放在根存储中。
我试过创建一个实体,但是原理图是为 forFeature() 做的。
NgRx 实体基本上是一个字典,具有与 update/read.
匹配的 NgRx 运算符
例如,您始终可以在任何可以存储字符串的存储中保存实体对象。如果你只需要一个实体对象,你可以通过扩展 Store 来实现
export interface State extends EntityState<User> {
...
}
或者您可以像
一样在商店中创建实体对象export interface State {
users: EntityState<User>;
books: EntityState<Book>;
}
您可以通过两种方式使用适配器。对于扩展版本,将整个 State
传递给适配器。对于第二种方法,将用户 属性 传递给适配器方法,并将结果设置为状态中 属性 的新值。
编辑
要更新实体对象,使用适配器。创建一个适配器并在减速器中使用它。更多关于它的信息和代码示例可以在 https://ngrx.io/guide/entity/adapter
// adapter definition
export const userAdapter: EntityAdapter<User> = createEntityAdapter<User>();
// reducer call for extended state / first version
on(UserActions.setUsers, (state, { users }): State => userAdapter.setAll(users, state)),