redux thunk是否会等到所有较早分派的操作修改了商店后才开始?

时间:2019-05-29 08:17:34

标签: reactjs redux redux-thunk

handleDeleteClick = propertyName => () => {
  this.props.clearFilterOption(propertyName, this.props.filtersPropertyName);
  this.props.onFilterClear();
};

handleDeleteClick函数是一个按钮处理程序。我的第一个redux操作clearFilterOption修改了商店。第二个动作onFilterClear是异步动作,它从redux-thunk的getState映射过滤器参数并调用api。我的问题是-redux thunk是否等待更早发布的修改商店的操作?换句话说-我是否可以确定第二项操作将在最新的商店版本中触发?

目前,它可以正常运行。使用清除的过滤器选项触发第二个操作。但是我不知道这是因为我正在使用redux-thunk还是因为clearFilterOption是一种低成本函数。

1 个答案:

答案 0 :(得分:1)

Thunk中间件不会像这样“等待”,它所做的只是查看已调度的动作,如果它是一个函数,它将调用它。

商店的修改顺序取决于您的操作以及它们是否异步。

在您的情况下,如果您的第一个操作function _formatDatetime(date: Date, format: string) { const _padStart = (value: number): string => value.toString().padStart(2, '0'); return format .replace(/yyyy/g, _padStart(date.getFullYear())) .replace(/dd/g, _padStart(date.getDate())) .replace(/mm/g, _padStart(date.getMonth() + 1)) .replace(/hh/g, _padStart(date.getHours())) .replace(/ii/g, _padStart(date.getMinutes())) .replace(/ss/g, _padStart(date.getSeconds())); } function isValidDate(d: Date): boolean { return !isNaN(d.getTime()); } export function formatDate(date: any): string { var datetime = new Date(date); return isValidDate(datetime) ? _formatDatetime(datetime, 'yyyy-mm-dd hh:ii:ss') : ''; } 是同步的,则它将始终在分派第二个操作之前更新商店。如果不是同步的,则取决于Thunk中发生的事情的时间。

如果您总是需要一件事情先于另一件事情发生,则应该链接您的动作(作为Thunk),而不是在clearFilterOption中按顺序分派它们。