我有一個 useEffect,當這樣做時它可以正常作業。
async function readUserPosts(profileID){
try {
const res = await axios.post(...);
setUserPosts(res.data.posts);
} catch (err) {
console.error(err);
}
}
useEffect(() => {
readUserPosts(profileID);
}, [profileID])
但是,如果我通過添加這樣的第二個函式來定義相同的 useEffect:
async function readUserPosts(profileID){
try {
const res = await axios.post(...);
setUserPosts(res.data.posts);
} catch (err) {
console.error(err);
}
}
useEffect(() => {
readUserPosts(profileID);
functionX();
}, [profileID])
useEffect 在我重新加載頁面的前幾次有效,之后它停止作業。即使我將 try catch 包裹在 2 個函式周圍,我也沒有收到任何錯誤訊息。FunctionX 是一個簡單的異步函式。我在 functionX 上替換了其他測驗函式,它產生了相同的結果。所以基本上,當定義第二個函式時它不會起作用。什么地方出了錯?
uj5u.com熱心網友回復:
用 useCallback 將這兩個方法括起來。例如,這是一種方法:
const readUserPosts = useCallback(async function() {
try {
const res = await axios.post(...);
setUserPosts(res.data.posts);
} catch (err) {
console.error(err);
}
}, []);
并嘗試像這樣添加依賴項:
useEffect(() => {
readUserPosts(profileID);
functionX();
}, [profileID, readUserPosts, functionX])
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/463935.html
標籤:javascript 反应 梅尔
