javascript - React Hook useEffect/useCallback 缺少依赖项
问题描述
我的 ProductUpdate.js 文件中有此警告。
我的代码如下所示:
const fetchProduct = () => {
getProduct(slug)
.then(p => setValues({...values, ...p.data }))
}
useEffect(() => {
fetchProduct()
fetchCategories()
}, [])
警告说:
React Hook useEffect 缺少依赖项:'fetchProduct'。包括它或删除依赖数组
但是当我将 fetchProduct 添加到依赖数组时,我进入了无限循环。
我试过 useCallback 钩子:
const fetchProduct = useCallback(() => {
getProduct(slug)
.then(p => setValues({...values, ...p.data }))
}, [])
useEffect(() => {
fetchProduct()
fetchCategories()
}, [fetchProduct])
但是随后警告说要向 useCallback 添加 slug 和 values 依赖项。当我这样做时,我再次进入无限循环。
有什么解决办法吗?
解决方案
添加getProduct
,slug
和setValues
到回调依赖数组应该可以工作:
const fetchProduct = useCallback(() => {
getProduct(slug)
.then(p => setValues(values => ({ ...values, ...p.data })))
}, [getProduct, slug, setValues])
useEffect(() => {
fetchProduct()
fetchCategories()
}, [fetchProduct, fetchCategories])
按照相同的模式fetchCategories
放入useCallback
.
推荐阅读
- python - 选择满足会员资格的 Pandas Dataframe
- php - 发送ajax请求时PHP不返回任何数据
- scala - 根据特定条件修改 Spark 数据框中的列
- amazon-athena - 访问 Athena 中正在更新的表
- javascript - 使用 Onclick 打开组件
- regex - 有效电话号码的正则表达式
- php - 当购物车中的产品缺货时显示消息
- cassandra - Ansible 服务模块在服务实际运行时返回服务状态为已停止
- python - 在同一图形上绘制多条线来自 Matplotlib
- android - 所有 gms 库必须使用与地点和地图完全相同的版本