ngxs,redux dev工具显示以前的状态

时间:2018-03-05 15:38:03

标签: angular5 ngxs

这是simple example

在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工具中,加载仍然是错误的:

enter image description here

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的新手,所以我不知道这种行为是不是我的错。我真的很感激任何提示或纠正,以使其以正确的方式工作。

1 个答案:

答案 0 :(得分:1)

这是框架中的一个错误,最近已得到解决:)