我使用 NGXS 作为我的状态管理库。我有一个用户状态和一个选择器来获取用户列表。我还有一个要更新用户名的组件。我想要这样做的方法是复制从选择器 observable 获得的用户列表,并将 ngModel 与输入一起使用。
这是我想要实现的一个例子。
还有我的状态选择器的片段
@Selector()
static getAll(state: User[]) {
return [...state];
}
问题是修改从选择器接收到的数据正在修改实际状态,即使没有调度操作。我理解它是因为我正在改变我直接从状态中获得的对象,但选择器不应该是只读的吗?
所以我的问题是
- 我认为选择器应该是只读的,不能以任何方式修改状态。他们不是吗?
- 即使将选择器更改为
return state.map(user=>Object.assign({}, user))
不起作用。是定义选择器的正确方法吗? - 还是我完全错过了如何使用选择器的东西?