首先,請看代碼。
const [currentUserPK, setCurrentUserPK] = useState(undefined);
const [currentPage, setCurrentPage] = useState(1);
const [rowsPerPage, setRowsPerPage] = useState(10);
//?? USER_PK ???? API
const getCurrentUserPk = async () => {
const url = '/api/account/decoding-token';
const res = await get(url)
.then((res) => {
console.log(res);
setCurrentUserPK(res.data.USER_PK);
})
.catch((error) => {
console.log(error);
});
};
useEffect(() => {
getCurrentUserPk()
},[]);
//??? ?? ??? ???? API
const getActionItems = async () => {
const url = `/api/work/view-items`;
const params = {
id: currentUserPK,
currentPage: currentPage,
feedsPerPage: rowsPerPage,
};
await get(url, { params: params }).then((res) => {
setActionItemArray(res.items);
console.log(res.items);
console.log(actionItemArray);
});
};
useEffect(() => {
getActionItems();
}, [currentPage, rowsPerPage, actionItemArray]);
以下代碼會出現問題。
useEffect(() => {
getActionItems();
}, [currentPage, rowsPerPage, actionItemArray]);
當我在第二個引數陣列中添加 actionItemArray 時,它一直回圈
console.log(res.items);
console.log(actionItemArray);
這兩個 console.log 事件。
當我從 useEffect Hook 的第二個引數中洗掉 actionItemArray 時,我必須重繪 我的頁面以添加、洗掉和編輯 actionItems。
我不知道為什么會這樣。請幫忙!
uj5u.com熱心網友回復:
該useEffect呼吁是改變狀態的函式:setActionItemArray()。更改狀態會觸發另一個渲染,這將依次呼叫useEffect重新開始該程序。
useEffect在初始渲染上運行,然后由于您實作它的方式,將在陣列中的依賴項之一發生更改時運行。因此,由于它在頁面首次加載時正在運行,因此它在每個頁面加載時都開始無限回圈
uj5u.com熱心網友回復:
“依賴項”(第二個引數)useEffect意味著值的變化應該觸發“效果”(第一個引數)
在 effect 內部,您更改actionItemArray,它也被傳遞到依賴項中。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/378031.html
標籤:javascript 反应 循环 得到
上一篇:語法錯誤:分配給右值
下一篇:如何將多個元素相互疊加?
