在console.log中,状态正确更新。模板也正确更新。
在redux dev工具中,状态会随着调度的延迟而更新。
更清楚的是,初始状态是:
{data: [], loading: false, counter: 0}
当我点击“获取”按钮时,组件将调度两个事件:
this.ngxs.dispatch(new LoadingData());
this.ngxs.dispatch(new GetData());
LoadingData只是空数据数组并将加载设置为true:
@Mutation(LoadingData)
loadingData(state){
state.data = [];
state.loading = true;
}
在控制台和模板中,状态会正确更新,但在redux dev工具中,加载仍然是错误的:
GetData是一个Action,它执行一个返回Observable的服务方法,然后调度两个事件DataSuccess并增加:
@Action(GetData)
getData(state){
return this.as.list().map(data => [
new DataSuccess(data),
new Increase(),
]);
}
只有现在,在redux dev工具加载设置为true
只增加增量计数器和DataSuccess将加载设置为false并填充数据数组:
@Mutation(Increase)
increase(state){
state.counter = state.counter + 1;
}
@Mutation(DataSuccess)
dataSuccess(state, {payload}){
state.data = payload;
state.loading = false;
}
DataSuccess在Increase之前执行。在DataSuccess中的redux dev工具中,加载仍设置为true,数据数组仍为空。
在redux dev工具中,最终填充了“增加数据”数组,但计数器设置为0。
所以redux dev工具总是显示以前的状态。我是redux / ngrx / ngxs的新手,所以我不知道这种行为是不是我的错。我真的很感激任何提示或纠正,以使其以正确的方式工作。
答案 0 :(得分:1)
这是框架中的一个错误,最近已得到解决:)