我的项目正在使用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,则肯定会因为onTextChange
和onSelect
而被调用两次。
但是,在第二次onValueChange(通过onSelect)调用中,由于操作是同步的,我想laycanDetails
由于第一次onValueChange(通过onTextChange)调用而被更新。不幸的是,第二个呼叫中的laycanDetails
没有更新。
我在想这是否是因为关闭。
希望你们能给我上课!