为什么这个 GET 请求会产生无限循环? (反应)
Why does this GET request create infinite loop? (React)
首先请看代码
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。
我不知道为什么会这样。请帮忙!
useEffect
正在调用一个正在改变状态的函数:setActionItemArray()
。更改状态会触发另一个渲染,这将依次调用 useEffect
再次开始该过程。
useEffect
运行s 在初始渲染上,然后由于您实现它的方式,只要数组中的一个依赖项发生变化,就会 运行 。因此,由于页面首次加载时是 运行ning,因此它会在每次页面加载时开始无限循环
useEffect
的“依赖项”(第二个参数)表示值更改应触发“效果”(第一个参数)
内部效果,您更改 actionItemArray
,它也被传递到依赖项中。
首先请看代码
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。
我不知道为什么会这样。请帮忙!
useEffect
正在调用一个正在改变状态的函数:setActionItemArray()
。更改状态会触发另一个渲染,这将依次调用 useEffect
再次开始该过程。
useEffect
运行s 在初始渲染上,然后由于您实现它的方式,只要数组中的一个依赖项发生变化,就会 运行 。因此,由于页面首次加载时是 运行ning,因此它会在每次页面加载时开始无限循环
useEffect
的“依赖项”(第二个参数)表示值更改应触发“效果”(第一个参数)
内部效果,您更改 actionItemArray
,它也被传递到依赖项中。