首页 > 解决方案 > 当多个道具更改被视为坏习惯甚至反模式时,是否在 useEffect 中调用 API?

问题描述

useEffect如标题所示 -当依赖数组中有多个道具被认为是坏习惯甚至反模式时,是否在钩子中调用 API 请求?

考虑示例:

useEffect(() => {
   dispatch(fetchUsersLocation); // action that calls API
}, [users, location, fetchUsersLocation, someOtherProp]);

因此,我们不是监听某个事件,例如click或调用操作componentDidMount(传递空依赖数组),而是监听users更改甚至location等等。

谢谢

标签: javascriptreactjs

解决方案


这取决于您真正需要调用该 API 的频率。以及依赖数组中这些项目多久更改一次。至少,React 文档建议在依赖数组中包含一个函数,例如动作创建者。请参阅:useEffect 依赖数组中的函数

除此之外,这取决于您的业务逻辑。如果您因为用户已更改而需要获取新数据,那么我认为这很好。尝试使用 React 开发工具选项来突出显示更新,以查看渲染频率是否可以接受。

在此处输入图像描述

一些有用的 useEffects 性能优化技巧:

  1. 针对不同的问题使用多个 useEffects。
  2. 使用 useEffects 中的条件跳过更新。

来源:https ://reactjs.org/docs/hooks-effect.html#tips-for-using-effects


推荐阅读