Ala*_*anH 2 javascript reactjs
我有一个带有HTML元素的子组件,它在单击时从它的父函数触发回调.然后,回调会更改父组件中的状态.然后将更改后的状态发送回父级,该父级在以下if语句的条件中使用.toggle
来自父级的prop,然后调度一个更改商店中值的操作.但是,此调度最终会更改存储,从而更改父组件中的一个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);
}
}
Run Code Online (Sandbox Code Playgroud)
因为onClick
触发了一个回调,它改变了上面依赖if语句的父状态中的字段,所以我必须抛出if语句componentWillUpdate
(或者一些React API,我可以执行if语句,一旦我确定改变了父级的状态是完整的(而不是使用onClick
函数调用).
我想在点击后只触发一次上面的内容.我不希望它无限循环.我怎样才能做到这一点?
我不希望它无限循环.我怎样才能做到这一点?
通过比较值props
来nextProps
.因此,您只需在需要时切换.在不知道当前逻辑的情况下很难提供准确的代码.
if (this.props.src !== nextProps.src) {
// toggle logic
}
Run Code Online (Sandbox Code Playgroud)
此外,您可能希望在内部执行此操作componentWillReceiveProps
,因此在切换发生之前,您无法进行渲染.
归档时间: |
|
查看次数: |
1778 次 |
最近记录: |