【发布时间】:2019-10-15 07:23:04
【问题描述】:
我正在使用 react-spring 为基于 @reach/dialog 的 Modal 设置动画。模态可以有任何孩子。在孩子们中,我正在根据一些道具获取一些数据。
问题是在打开模式时进行了两次 fetch 调用。我认为这可能与我如何管理状态有关,这会导致重新渲染。
我尝试过在 modal 中记忆孩子,但没有成功,所以我认为问题出在 Modal 组件之外。
这里有一些接近我的代码以及它是如何工作的https://codesandbox.io/s/loving-liskov-1xouh
编辑:我已经知道如果我删除 react-spring 动画,则不会发生双重渲染,但我想尝试保持动画完整。
你认为你能帮我找出错误在哪里吗? (也非常感谢一些关于使用钩子的良好实践的提示)。
【问题讨论】:
-
它没有被调用两次,api请求使它看起来像被调用了两次。
-
@JuniusL。不是它被调用了两次,我认为这是不止一次发生的渲染。如果我使用 React Devtools 对 Modal 进行分析,它会在打开和关闭的循环中在 Modal 组件中显示总共 5 个渲染。
-
我尝试在孩子身上使用 React.memo 但结果是一样的 @filipe 。 React.PureComponent 有什么不同?
标签: reactjs react-hooks react-spring