我呼叫了一個承諾,它回傳一個取消訂閱功能。如何使用 中的回傳函式取消訂閱useEffect?
useEffect(()=>{
let unSub = ()=>{}
async function run(){
unSub = await promise();
}
run();
return unSub
})
這么想著,不知道是不是正確的做法,react的做法是什么?
uj5u.com熱心網友回復:
// on component mount
useEffect(() => {
// do some stuff ie. subscribe
// on component unmount
return () => {
// do some stuff ie. unsubscribe
}
}, [/* dependencies */])
uj5u.com熱心網友回復:
我認為您的具體案例沒有特定的眾所周知的做法。傳統的 React 取消訂閱async操作的方式是在 的主體中使用一個布林值useEffect,并在清理中重置它。
如果您正在使用fetchapi,則AbortControllerapi 可以取消請求。如果您使用的是 axios,則可以呼叫cancelTokens一些可以取消請求的東西。
也許這可以是一個解決方案:
useEffect(()=>{
let unSub = ()=>{};
let isMounted = true;
let newUnSubSet = false;
async function run(){
unSub = await promise();
newUnSubSet = true;
}
run();
return () => {
if (newUnSubSet) {
unSub();
}
newUnSubSet = false;
isMounted = false;
}
})
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/333504.html
