ngxs、redux 开发工具显示之前的状态

Posted

技术标签:

【中文标题】ngxs、redux 开发工具显示之前的状态【英文标题】:ngxs, redux dev tools show previous state 【发布时间】:2018-08-13 07:42:19 【问题描述】:

这是simple example。

在 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 开发工具中,loading 设置为 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 的新手,所以我不知道这种行为是否是我的错。我非常感谢任何提示或更正以使其以正确的方式工作。

【问题讨论】:

对我来说一切正常。你有什么问题? 我认为在 redux 开发工具中看到错误的状态是不正常的(更准确地说是之前的状态)。请查看更新的问题或在启用了 redux 开发工具扩展的浏览器中执行示例。 【参考方案1】:

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

【讨论】:

以上是关于ngxs、redux 开发工具显示之前的状态的主要内容,如果未能解决你的问题,请参考以下文章

NGXS updateItem 状态算子

在ngxs中重置状态

带有 redux-form 的 Redux 开发工具

NGXS状态管理:在调用操作时更改状态并将其保存到DB

数据流程redux

(转)redux