NGXS | Select 路由返回旧数据后
NGXS | Select after route returning old data
我遇到了 NGXS 问题。我有一组对象,我通过分派一个动作来编辑其中一个对象。
现在,当我单击重置按钮时,我想路由到父组件并将状态重置回原始状态,因此我保留了原始对象的副本。
但是,问题是当我在父组件中执行 select 操作时,它仍然是 returns 旧对象。
@Select(ItemState.getItems) ItemNGXS: Observable<ItemStateModel>;
我可能做错了什么?
重置按钮代码:
resetArray() {
this._store.dispatch(new EditItem(this.originalItem))
.subscribe(res => {
this._route.navigate(['questionnaire']);
});
}
item.state.ts editItem 方法:
@Action(EditItem)
edit({ getState, setState }: StateContext<ItemStateModel>, { payload }: EditItem) {
const state = getState();
const ItemList = [...state.items];
const index = itemList.findIndex(item => item.Id === payload.Id);
itemList[index] = JSON.parse(JSON.stringify(payload));
setState({
...state,
items: itemList
});
}
我注意到 getItems 将状态恢复到编辑前的旧状态(即)。我不确定为什么 Selector 将其恢复到旧状态。
我解决了。这是我的一个愚蠢的错误。
resetArray() {
this._store.dispatch(new EditItem(this.originalItem))
.subscribe(res => {
this._route.navigate(['questionnaire']);
});
}
路由到组件后,我正在调度一个将状态设置为旧数据的操作。我将代码移动到正确的位置并得到修复。
我遇到了 NGXS 问题。我有一组对象,我通过分派一个动作来编辑其中一个对象。 现在,当我单击重置按钮时,我想路由到父组件并将状态重置回原始状态,因此我保留了原始对象的副本。 但是,问题是当我在父组件中执行 select 操作时,它仍然是 returns 旧对象。
@Select(ItemState.getItems) ItemNGXS: Observable<ItemStateModel>;
我可能做错了什么?
重置按钮代码:
resetArray() {
this._store.dispatch(new EditItem(this.originalItem))
.subscribe(res => {
this._route.navigate(['questionnaire']);
});
}
item.state.ts editItem 方法:
@Action(EditItem)
edit({ getState, setState }: StateContext<ItemStateModel>, { payload }: EditItem) {
const state = getState();
const ItemList = [...state.items];
const index = itemList.findIndex(item => item.Id === payload.Id);
itemList[index] = JSON.parse(JSON.stringify(payload));
setState({
...state,
items: itemList
});
}
我注意到 getItems 将状态恢复到编辑前的旧状态(即)。我不确定为什么 Selector 将其恢复到旧状态。
我解决了。这是我的一个愚蠢的错误。
resetArray() {
this._store.dispatch(new EditItem(this.originalItem))
.subscribe(res => {
this._route.navigate(['questionnaire']);
});
}
路由到组件后,我正在调度一个将状态设置为旧数据的操作。我将代码移动到正确的位置并得到修复。