【问题标题】:How can i call componentDidUpdate() with componentDidMount in react-native redux?如何在 react-native redux 中使用 componentDidMount 调用 componentDidUpdate()?
【发布时间】:2019-06-30 00:42:48
【问题描述】:

我在 react-native redux 中从 api 获取数据,但是当我调用 componentDidMount() 函数时,它会获取数据并一次运行一次,但是当我使用 componentDidUpdate() 调用 componentDidMount() 来更新我的数据时已在设置页面中更改并保存在 redux 状态,然后我的模拟器被挂起,componentDidUpdate() 函数在第二个循环中运行了很多时间。

有没有什么方法可以阻止它,它应该一次运行一次? if else 条件?

调用componentDidMount() with componentDidUpdate()的真正方法是什么?

【问题讨论】:

  • 可以把相关代码发到componentDidMountcomponentDidUpdate吗?
  • 现在可以了,兄弟。 with if else prevProps
  • 好。但是,正如 InfectedMushroom 所说,您永远不应该在您的 componentDidUpdate 函数中调用 componentDidMount。您可能需要更改该代码以避免潜在的错误。
  • 兄弟,我不是在didMount中调用didUpdate,我是单独调用它们,循环的原因是我没有检查prevProps。

标签: reactjs api react-native redux fetch


【解决方案1】:

componentDidMount() 仅在组件处于安装阶段时立即运行。 在componentDidUpdate() 内调用componentDidMount() 是一种反模式,会导致无限循环,从而导致无限循环。 如果您需要使用刚刚从端点获取的数据更新页面,您必须调用componentDidUpdate() 方法。

如果您需要在页面上运行另一个更新之前检查prevPropsthis.props 之间的区别。

编辑:您可以参考此页面来检查您必须在反应中工作的不同生命周期。 https://reactjs.org/docs/react-component.html

【讨论】:

  • 是的,它现在可以与 if else 检查 prevProps 一起使用。谢谢兄弟。
猜你喜欢
  • 1970-01-01
  • 2020-01-12
  • 2019-03-29
  • 1970-01-01
  • 2020-05-07
  • 2017-07-09
  • 1970-01-01
  • 2018-12-17
  • 1970-01-01
相关资源
最近更新 更多