背景
t5zmwmid1#
我们是没有暴露给外部轮训的定时器状态的。没太理解 「判断当前定时器状态,决定是否进行轮询」是啥意思,如果不使用轮训,那么轮训定时器怎么启动呢
hlswsv352#
举例一个场景
我们有个list,然后会轮询请求去更新里面的数据。
然后我们有个useEffect
useEffect(()=>{ if(!list.length) cancel(); // STEP: 这里需要开启或者继续定时器,由于无法直接判断,我们只能直接调用run run() },[list])
这样就变成死循环了,因为list变动触发run,run又会触发list的更新
但想象中应该是
useEffect(()=>{ // CONDI: 没有list了 => 就不轮询了 if(!list.length) cancel(); // CONDI: 如果还在轮询 => 不操作 if(isPoll) retrun // CONDI: 如果没有轮询 => 开始轮询 run() },[list])
这个list的内容是由其他组件控制的,是个队列,所以有『有列表』和『无列表』两种状态
ztyzrc3y3#
目前没有提供,可以通过 loading 来判断~
3条答案
按热度按时间t5zmwmid1#
我们是没有暴露给外部轮训的定时器状态的。没太理解 「判断当前定时器状态,决定是否进行轮询」是啥意思,如果不使用轮训,那么轮训定时器怎么启动呢
hlswsv352#
我们是没有暴露给外部轮训的定时器状态的。没太理解 「判断当前定时器状态,决定是否进行轮询」是啥意思,如果不使用轮训,那么轮训定时器怎么启动呢
举例一个场景
我们有个list,然后会轮询请求去更新里面的数据。
然后我们有个useEffect
这样就变成死循环了,因为list变动触发run,run又会触发list的更新
但想象中应该是
这个list的内容是由其他组件控制的,是个队列,所以有『有列表』和『无列表』两种状态
ztyzrc3y3#
目前没有提供,可以通过 loading 来判断~