在功能内反应运行功能

时间:2018-12-18 14:00:09

标签: javascript reactjs redux

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: '' }

1 个答案:

答案 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来应用相同的想法。