我想在我的React組件內用Redux狀態切換無限回圈。這是我到現在為止得到的東西,但它不能正常作業,因為當狀態改變時它不會停止,因為該函式使用了它的舊版本。
const { monitor } = useSelector((state) => state.monitors)
useEffect(() => {
handleMonitoring( monitors)
}, [monitor])
const handleMonitoring = async () => {
if (monitor && monitors.filter(monitor => { return monitor。 active }).length) {
await dispatch(watchMonitors( monitors))。
return handleMonitoring()
}
else {
console.log('closed')
return;
}
uj5u.com熱心網友回復:
我認為使用遞回函式而不是無限回圈是更好的主意。
const handleMonitoring = async ( ) => {
await dispatch(watchMonitors( monitors))。
if(monitor && monitors.filter(monitor => { return monitor. active }).length) {
return;
}
else {
return handleMonitoring()
}
}
uj5u.com熱心網友回復:
你必須宣告一個額外的變數來決定你是否要繼續監控。
這個變數將被初始化為true,并在清理函式中設定為false。
span class="hljs-keyword">const { monitors } = useSelector(state => state.monitors)
useEffect(() => {
let active = true;
async function handleMonitoring() {
while(active && monitors && monitors.find(m => m.active) {
await dispatch(watchMonitors( monitors))。
}
console.log('closed') 。
}
handleMonitoring()。
return () => { active = false; };
}, [顯示幕])。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/327346.html
標籤:
