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
是一种低成本函数。
答案 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
中按顺序分派它们。