【发布时间】:2017-02-08 00:17:52
【问题描述】:
我有一个带有 HTML 元素的子组件,该元素在单击时触发其父函数的回调。回调然后更改父组件中的状态。然后将更改的状态发送回父级,该父级在下面的 if 语句的条件中使用。 toggle,来自父级的道具,然后调度一个更改存储中值的操作。然而,这个 dispatch 最终改变了 store,从而改变了父组件中的一个 props,它也被传递给了子组件。
因此,当我将它插入到我的代码中时,我得到了一个无限循环。
/* no state changes to the current component */
componentWillUpdate(nextProps) {
const {
// ... some props
toggle, // func
} = nextProps;
if (/* case 1 of 2*/)
toggle(true);
} else (/* case 2 of 2 */) {
toggle(false);
}
}
因为onClick 触发了一个回调,该回调会更改上面 if 语句所依赖的父状态中的一个字段,所以我必须在 componentWillUpdate 中抛出 if 语句(或一些我可以执行 if 语句的 React API一旦我确定对父状态的更改已完成(而不是将其与onClick 函数调用放在一起)。
我只想在点击后触发一次上述操作。我不希望它无限循环。我该怎么做?
【问题讨论】:
标签: javascript reactjs