Redux无法拉取数据,useEffect报dispatch和id缺失依赖警告如何解决?
问题1:页面无数据的核心原因
你server.js中的商品详情接口返回值为空,找到匹配商品后没有把商品数据返回给前端,导致前端请求拿到的是空值,Redux里自然存的是空数据:
// 原错误代码 if(product) res.send(); // 修改为 if(product) res.send(product);
问题2:useEffect依赖告警的解决方法
React的useEffect要求所有内部用到的外部变量都要放到依赖数组里,你需要把dispatch和id都加入依赖数组,修改ProductScreen.js中的useEffect代码即可消除告警:
// 原错误代码 useEffect(() => { dispatch(detailsProduct(id)); return () => { // }; }, []) // 修改为 useEffect(() => { dispatch(detailsProduct(id)); }, [dispatch, id])
useDispatch返回的dispatch函数引用是稳定的,加入依赖数组不会引发多余的effect执行,完全符合react-hooks规则。
内容的提问来源于stack exchange,提问作者LucasSaladini
相关产品推荐
相关产品推荐

