setInterval回调函数不是动态的(Redux-props)



我有一个简单的jssetInterval,其中我的回调只是检查一些Redux变量:

setInterval(() => {
console.log(props.myStateVariable);
}, 5000);

问题是,它只是打印setInterval实例化时的变量。如何使其充满活力?感谢

编辑

如果这个myStateVariable是一个长的、可编辑的文本的字符串变量,那么我不想每次有人键入一封信时都重新设置这个超时呢?

尝试将区间函数存储在变量中,每次props.myStateVariable更改时覆盖区间函数:

const interval = useRef(null);
useEffect(()=> {
interval.current = setInterval(() => {
console.log(props.myStateVariable);
}, 5000);
return ()=> clearInterval(interval.current);
}, [props.myStateVariable]);

编辑

如果不想在每次属性更改时覆盖间隔,可以使用useRef挂钩来存储属性值。通过这种方式,您可以访问它的价值:

const propRef = useRef(null);
propRef.current = props.myStateVariable;
useEffect(()=> {
const interval = setInterval(() => {
console.log(propRef.current);
}, 5000);
return ()=> clearInterval(interval);
}, []);

最新更新