![](/img/trans.png)
[英]React Hook useEffect has a missing dependency: 'formData'. Either include it or remove the dependency array. what is dependency is use
[英]React Hook useEffect has a missing dependency: 'tasks'. Either include it or remove the dependency array
我從后端獲取數據並在 componentdidmount 中設置為我的 state 但在日志 state 后未設置值
const [tasks, setTasks] = useState([]);
const getTasks = async () => {
const getTodoInformation = {
email: localStorage.getItem("tokenEmail"),
};
if (getTodoInformation.email) {
const response = await axios.post(
"http://localhost:9000/api/todo/get",
getTodoInformation
);
setTasks(response.data.data);
}
};
useEffect(() => {
getTasks();
console.log(tasks);
}, []);
登錄時我的任務是空的
const [tasks, setTasks] = useState([]);
useEffect(() => {
setTimeout(async () => {
const getTodoInformation = {
email: localStorage.getItem("tokenEmail"),
};
if (getTodoInformation.email) {
const response = await axios.post(
"http://localhost:9000/api/todo/get",
getTodoInformation
);
setTasks(response.data.data);
}
}, 1000);
console.log(tasks);
}, []);
所以標題和問題本身其實是兩個問題。
React Hook useEffect 缺少一個依賴項:'tasks'。 要么包含它,要么移除依賴數組
那是因為您在useEffect
掛鈎中包含了 state (即tasks
)。 React 基本上是在問你,“你的意思是每次更新tasks
時都運行console.log(tasks)
嗎?”。 因為你正在做的是一次且只運行一次useEffect
鈎子。
對於您的“實際”問題
日志 state 后未設置值
簡而言之,狀態是在 React 中以異步方式設置的。 這意味着tasks
不需要在您調用setTasks
后立即更新。 有關詳細信息,請參閱@JBallin 評論。
主要問題是 useEffect -> 是一個同步方法, getTasks() 是異步的,並且 useEffect 只在組件掛載時起作用。 簡而言之,您在 useEffect 工作后從后端獲取了數據。
例如,如果您要再添加一個 useEffect
useEffect(() => {
console.log(tasks);
}, [tasks]);
在您的數據發生更改后,您將看到日志。
您可以在 useEffect 中使用自調用async
useEffect
,如下所示:
const [tasks, setTasks] = useState([]);
const getTasks = async () => {
const getTodoInformation = {
email: localStorage.getItem("tokenEmail"),
};
if (getTodoInformation.email) {
const response = await axios.post(
"http://localhost:9000/api/todo/get",
getTodoInformation
);
return response.data.data;
}
};
useEffect(() => {
(async () => {
const tasks = await getTasks();
setTasks(tasks);
})();
console.log(tasks);
}, [tasks]);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.