Redux-Thunk同步操作不同步

时间:2019-05-22 12:32:40

标签: reactjs redux redux-thunk

我的项目正在使用Redux-Thunk。

今天我发现了一件很奇怪的事情。让我给你看一些代码。


在一个组件中,我将调用props函数。

_onSelect = (selection) => {
  const { onTextChange, onSelect } = this.props;

  this.setState({
    selections: [],
  }, () => {
    onTextChange(selection.Name);
    onSelect(selection.UUID);
  });
}

在另一个组件中,这两个功能是第三个组件的道具。

<AutoComplete
  onTextChange={text => onValueChange('VesselName', text)}
  onSelect={value => onValueChange('VesselID', value)}
/>

在第三个组件中,值更改将触发操作。

onValueChange = (field, value) => {
  const {
    setLaycanDetailsAction,
    laycanDetails, // will be updated in store
  } = this.props;

  setLaycanDetailsAction({
    ...laycanDetails,
    [field]: value,
  });
}

此外,此操作是同步的。

export const setLaycanDetails = updatedLaycanDetails => ({
  type: SET_LAYCAN_DETAILS,
  payload: updatedLaycanDetails,
});

现在出现了奇怪的事情:如果调用第一个组件中的_onSelect,则肯定会因为onTextChangeonSelect而被调用两次。

但是,在第二次onValueChange(通过onSelect)调用中,由于操作是同步的,我想laycanDetails由于第一次onValueChange(通过onTextChange)调用而被更新。不幸的是,第二个呼叫中的laycanDetails没有更新。

我在想这是否是因为关闭。

希望你们能给我上课!

0 个答案:

没有答案