我有一个简单的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);
}, []);