reactjs - 在依赖项中调度。哪里是真的?我们应该或不应该在反应钩子中添加调度吗?
问题描述
我们应该或不应该在反应钩子的依赖项中添加调度?对这件事有确切的看法吗?谁知道真假?有人说是,有人说不是
const Component = () => {
const dispatch = useDispatch();
useEffect(() => {
dispatch(someAction());
}, [dispatch]);
return (
<div>
Component
</div>
);
};
解决方案
没有意见,来自 3rd 方库的值应该在 dep array中。
那是因为你不知道它的价值是否持续存在(除非它在文档中提到或者你检查了源代码)。
从依赖项中删除它会给你一个 eslint 警告react-hooks/exhaustive-deps
。
特定于 Redux 的useDispatch
,该值是持久的,因此删除它不会有任何区别。
注意:就像在 React 中一样
useReducer
,返回的调度函数标识是稳定的,不会在重新渲染时改变。
但如前所述,对于其他库可能并非如此,因此将它放在依赖项中是一种额外的安全性,无需与 linter 对抗。
推荐阅读
- node.js - Travi-ci.com 可以读取环境变量,但 travs-ci.com 不能
- javascript - 想要添加任何一个类,或者添加字体样式:斜体,到 map() 中的特定项目
- ios - LazyVStack ScrollView 性能
- python - pandas 和 nan 组团
- javascript - 强制代码暂停执行,直到带有承诺的函数结束执行 - javascript
- git - Git Ahead SSH 错误 - 无法克隆到“我的目录” - 找不到 SSH 身份文件
- sql-server - 我的 sqlcmd bcp 命令不断返回“'.' 附近的语法不正确。”
- c++ - DirectX11 如何将数据写入纹理并在像素着色器中读取?
- html - 带有半透明边框的背景上的 CSS 透明三角形
- python - Python Selenium 多线程不起作用