- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个带有 HTML 元素的子组件,该元素在单击时会触发其父函数的回调。然后回调会更改父组件中的状态。然后,更改后的状态被发送回父级,该父级在下面的 if 语句的条件中使用。 toggle
,来自父级的 prop,然后调度一个更改存储中值的操作。但是,此调度最终会更改 store,从而更改父组件中的 props 之一,该 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 语句(或者一些 React API,一旦我确定对父状态的更改已完成,我就可以执行 if 语句(而不是将其与 onClick
函数调用放在一起)。
我只想在单击后触发上述一次。我不希望它无限循环。我怎样才能做到这一点?
最佳答案
I don't want it to loop infinitely. How can I do this?
通过将 props
中的值与 nextProps
进行比较。因此,您只需在需要时进行切换。如果不知道您当前的逻辑,很难提供准确的代码。
if (this.props.src !== nextProps.src) {
// toggle logic
}
此外,您可能希望在 componentWillReceiveProps
内部执行此操作,这样您就不会在切换发生之前进行渲染。
关于javascript - 如何防止 componentWillUpdate 导致无限循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42102460/
我认为当调用 componentWillUpdate 时,我可以读取最新状态,即来自 this.state 的状态。然而,当我仔细检查文档后,我意识到我错了。事实上,即使在 this.state 之后
有人可以解释一下在下一个上下文中到底发生了什么吗: 假设我有一个应用程序组件(父组件),还有一些子组件,例如索引、搜索、关于,这三个组件有它们的子组件。 当我在应用程序组件中调用 componentW
我是 React 新手,我遇到了这个 doc 。它说: Either way, it is unsafe to use componentWillUpdate for this purpose in
这个问题已经有答案了: Why does componentDidUpdate() create an infinite loop? (1 个回答) 已关闭 3 年前。 我有一个带有 HTML 元素的
在 React 中,如果子组件更新,无论是 props 还是 states,父组件的 componentWillUpdate 会被调用吗? 最佳答案 由于组件从其父组件获取其 props,因此如果其
我是 ReactJS 的新手,开始学习组件生命周期。现在我对 componentWillUpdate 和 componetDidUpdate 有疑问。我知道一旦您从 shouldComponentUp
我知道这不是惯用的 React,但我正在开发一个 React 组件(反向 ScrollView ),它需要在渲染之前和渲染之后得到下游虚拟 DOM 更改的通知。 这有点难以解释,所以我制作了一个起点为
设置当我的组件安装时,我的状态中有一个空的相册数组正在 react 。 我在做什么 在输入框中的每个输入中,我都会进行 API 调用,该调用返回专辑列表,并根据输入进行更改。我想将专辑添加到数组中而不
如何在组件更新后删除类?例如, //fire update where fieldname is array of changed fields componentWillUpdate(){ $
React 16.3.0 发布,React 生命周期发生了变化。 React 不推荐使用componentWillMount、componentWillReceiveProps、componentWi
我有一个疑问,当我们使用React组件方法时,是否存在具有相同行为的方法,并且它们在组件生命周期中被一一调用?那么主要区别是什么, shouldComponentUpdate(nextProps, n
这样做会产生什么影响? class Foo extends React.Component { componentWillUpdate(nextProps, nextState) {
我试图找出作为 Prop 传入的 React 组件中背景图像的方向。 我首先创建一个图像对象并将其 src 设置为新图像: getImage() { const src = this.pr
当我在 componentWillUpdate 中 setState 时,componentWillUpdate 在无限循环中运行,并且不会停止触发。 这永远不会让我的渲染有机会反射(reflect)
我正在创建一个简单的Todo应用程序,我正在使用componentDidMount来显示数据库中的数据。但问题是,一旦我添加新数据,数据就会被存储,但除非刷新,否则它不会显示在页面上。 然后我遇到了c
所以,假设我有 2 个 React 组件,如下所示: var Parent = React.createClass({ getInitialState: function(){ re
我们可以在每个组件生命周期方法中调用 setState()。 为什么我们不在 componentWillUpdate() 和 componentWillMount() 中调用它? 为什么这些方法在将
我正在制作这个 Conway 的生命游戏 React 项目,它工作得很好,但是当我添加最后几个按钮来清除棋盘时,React 的一些其他功能给了我这个错误 Maximum update depth ex
我正在使用 Jest 0.4.0。我有一个组件包含在其中(来自react-router文档): var stubRouterContext = (Component, props, stubs) =>
我是一名优秀的程序员,十分优秀!