当handleOpenDropDown
更新为fastening.value
时,我正在尝试运行函数drill_free
。
我遇到的问题是,当用户选择一个选项并且selectFastening
运行并将fastening.value
设置为'drill_free'时,它无法识别该值已更新为{{1 }},直到选择了另一个选项,该功能将开始运行,因此它将在预期的时间内运行。
如何更改drill_free
函数,以便将selectFastening
设置为fastening.value
时,drill_free
函数将立即运行
redux store
handleOpenDropDown
fastening.js
fastening { value: '', valid: '' }
答案 0 :(得分:4)
这里:
selectFastening = (fastening, name) => {
this.props.selectFastening(fastening)
this.props.selectedFastening.value === 'drill_free' && this.handleOpenDropdown()
}
第二行中的道具尚未更新,因此React仍在使用旧的道具。
您可以这样说:
this.props.selectedFastening.value === 'drill_free' && this.handleOpenDropdown()
在componentDidUpdate
中。但是,如果事后 else 触发componentDidUpdate
并且value
仍然是drill_free
,它将再次调用handleOpenDropDown()
函数。因此,您可能希望以某种方式保护自己免受这种情况的侵害。
您可以选中与issue相关(较旧)的componentWillReceiveProps
,但可以使用componentDidUpdate
来应用相同的想法。