javascript - 当多个道具更改被视为坏习惯甚至反模式时,是否在 useEffect 中调用 API?
问题描述
useEffect
如标题所示 -当依赖数组中有多个道具被认为是坏习惯甚至反模式时,是否在钩子中调用 API 请求?
考虑示例:
useEffect(() => {
dispatch(fetchUsersLocation); // action that calls API
}, [users, location, fetchUsersLocation, someOtherProp]);
因此,我们不是监听某个事件,例如click
或调用操作componentDidMount
(传递空依赖数组),而是监听users
更改甚至location
等等。
谢谢
解决方案
这取决于您真正需要调用该 API 的频率。以及依赖数组中这些项目多久更改一次。至少,React 文档建议在依赖数组中包含一个函数,例如动作创建者。请参阅:useEffect 依赖数组中的函数。
除此之外,这取决于您的业务逻辑。如果您因为用户已更改而需要获取新数据,那么我认为这很好。尝试使用 React 开发工具选项来突出显示更新,以查看渲染频率是否可以接受。
一些有用的 useEffects 性能优化技巧:
- 针对不同的问题使用多个 useEffects。
- 使用 useEffects 中的条件跳过更新。
来源:https ://reactjs.org/docs/hooks-effect.html#tips-for-using-effects
推荐阅读
- blazor - Blazor 服务器强制缓存重新加载
- android - 推送通知即将到来时,Android 应用程序崩溃
- sql-server - SQL UPDATE 和 CASE 语句不起作用
- ruby - 运行 pod install 返回 rubygems 错误
- python - 使用 pybind 在 C++ 中的索引处设置一个 numpy 数组值
- vue.js - 没有前缀 VUE_APP 的 Vue cli env
- python - 点击取消按钮时不从 QDialog 检索数据到 QMainWindow
- php - Yii平台如何修改日期格式?
- javascript - 从ajax隐藏div
- c# - 在 Mongo C# 中,分组时,如何创建包含全部内容的组列表?