setInterval 回调函数不是动态的(Redux props)
setInterval callback function is not dynamic (Redux props)
我有一个简单的 js setInterval
,我的回调只是检查一些 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);
}, []);
我有一个简单的 js setInterval
,我的回调只是检查一些 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);
}, []);