2

这是一个简单的例子

在 console.log 中,状态已正确更新。模板也正确更新。

在 redux 开发工具中,状态会随着调度的延迟而更新。

更清楚地说,初始状态是:

{data: [], loading: false, counter: 0}

当我单击“获取”按钮时,组件会调度两个事件:

this.ngxs.dispatch(new LoadingData());
this.ngxs.dispatch(new GetData());

LoadingData 只是清空数据数组并将 loading 设置为 true:

@Mutation(LoadingData)
loadingData(state){
    state.data = [];
    state.loading = true;
}

在控制台和模板中,状态更新正确,但在 redux 开发工具中加载仍然是错误的:

在此处输入图像描述

GetData 是一个 Action,它执行一个返回 Observable 的服务方法,然后调度两个事件 DataSuccess 和 increase :

@Action(GetData)
getData(state){
  return this.as.list().map(data => [
    new DataSuccess(data),
    new Increase(),
  ]);
}

只是现在,在 redux 开发工具中加载设置为 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 开发工具中,加载仍然设置为 true,并且数据数组仍然为空。

在增加数据数组的 redux 开发工具中,最终填充了数据,但计数器设置为 0。

所以 redux 开发工具总是显示之前的状态。我是 redux/ngrx/ngxs 的新手,所以我不知道这种行为是否是我的错。我非常感谢任何提示或更正以使其以正确的方式工作。

4

1 回答 1

1

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

于 2018-03-09T16:45:39.443 回答