You can also do a functional update ‘setXXX(r => ...)‘ 问题

let [remarr, setRemarr] = useState<any[]>([])
useEffect(() => {
recommendlist(count).then((ok) => {
                    console.log(ok, count);
                    setRemarr([...remarr, ...ok.data.data])

                });
 }, [])

这里的问题是,在useEffect回调中引用remarr状态,从而使其成为依赖项。但是不能无条件地更新任何依赖项的值,因为这会导致在将remarr状态添加为依赖项时看到的渲染循环。 

WARNING in [eslint] 
src\components\recommend\Index.tsx
  Line 50:8:  React Hook useEffect has a missing dependency: 'remarr'. Either include
 it or remove the dependency array. 
You can also do a functional update 'setRemarr(r => ...)' if you only need 'remarr' 
in the 'setRemarr' call  react-hooks/exhaustive-deps

webpack compiled with 1 warning

参考方法https://www.5axxw.com/questions/content/ef44g9 

应该在状态更新程序上使用函数状态更新,以便删除外部remarr依赖项。函数更新将状态更新排队,并将上一个状态值传递给可用于计算下一个状态值的回调。

  recommendlist(count).then((ok) => {
                    console.log(ok, count);
                    setRemarr(remarr => [...remarr, ...ok.data.data])

                });

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值