遇到的坑:
react 使用setInterval调用方法轮训调用接口的时候 明明已经setState进去的值获取不到,只能拿到初始值。
问题的原因是:
使用setInterval创建的时候会获取整个函数执行的上下文环境,后续setInterval没有被清理所以在定时器里拿到的永远都是第一次被创建的时候的函数上下文,所以你拿不到最新的值。
解决方法:
例如取不到anchorSetting的值可以这样写;
let value = anchorSetting;
setAnchorSetting(v => {
value = v;
return v;
});
setAnchorSetting会缓存上次被set进去的值,但怎么说这种方法能解决问题但是不优雅。如果有更好的方法欢迎评论