为什么这个 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,它也被传递到依赖项中。