javascript - ComponentDidUpdate SetState ReactJS 无限循环

标签 javascript reactjs

即使有许多具有相同主题行的问题,我也无法得到我的问题的答案。
问题

我有一个选择下拉菜单。点击其中,我调用了一个获取一些键值的 Api。我将这组键值输入字段视为一个组件。因此,每次选择下拉菜单的 onChange 时,我都使用生命周期方法来处理 API 调用。此外,我记录这些输入键值并将它们的状态发送回父组件。

根据 ReactJS 生命周期方法:
我用
componentDidMount
在初始渲染后首次调用 API。这行得通。
组件更新
在选择下拉更改时调用 API 以进行后续 API 调用。但问题就在这里。当我尝试更新输入字段的状态时,程序陷入无限循环,因此存在无限 API 调用。调试后我很确定问题出在 setState() 上,但我找不到在 componentDidUpdate 方法中处理状态的最佳方法。
这个link完全复制了我的问题,但我想要一个标准化的解决方案
希望这很清楚。
我在这里先向您的帮助表示感谢!

最佳答案

the docs 中清楚地说明了这一点:

componentDidUpdate(prevProps) {
  // Typical usage (don't forget to compare props):
  if (this.props.userID !== prevProps.userID) {
    this.fetchData(this.props.userID);
  }
}

You may call setState() immediately in componentDidUpdate() but note that it must be wrapped in a condition like in the example above, or you’ll cause an infinite loop.

关于javascript - ComponentDidUpdate SetState ReactJS 无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37937250/

相关文章:

reactjs - 我的数组计数器落后了 1 步。我该如何解决这个问题?

javascript - 将文档内 SVG 栅格化为 Canvas

javascript - 跨浏览器等效于 explicitOriginalTarget 事件参数

javascript - Angular2 - OnInit 访问函数

javascript - 修改 DOM

javascript - 过滤 JSON 文件并查找值

reactjs - React Typescript 如何设置状态

html - CSS 样式以便按照我希望它们在我的页面上的方式正确对齐 img?

javascript - Jquery 同时展开和滚动

javascript - enter() 选择上的 extra select() 究竟做了什么?