gpt4 book ai didi

javascript - "The final argument passed to useEffect changed size between renders",但我不认为是这样?

转载 作者:行者123 更新时间:2023-12-03 16:41:36 35 4
gpt4 key购买 nike

我认为我以前从未收到过此错误:

The final argument passed to useEffect changed size between renders. The order and size of this array must remain constant.


我在 useEffect() 中完成了 axios 请求100 次,使用 useEffect()以与 componentDidMount() 类似的方式, 但这是我第一次使用带有 async 的可重用函数/ await ,并将数据解析回 useEffect() .网上的其他人在他们的教程中做同样的事情,但他们从来没有提到这个错误。
const [tableData, setTableData] = useState([])
useEffect(() => {
const data = async() => {
const dataArr = await getPagList('tags', 1, 25)
console.log("Data received: ", dataArr)
if(dataArr.length > 0) {
setTableData(dataArr)
}
}
data()
}, [])
我相信,它在提示我喂的空数组 useEffect()作为第二个参数。但是,那个空数组没有改变……对吧?我试着用谷歌搜索它,但我发现这个错误的解决方案是我已经在做的。没有一个示例使用 async/ await .
我也试过这个,没有成功:
    useEffect(() => {
setData()
}, [])

const setData = () => {
const data = async() => {
const dataArr = await getPagList('tags', 1, 25)
console.log("Data received: ", dataArr)
if(dataArr.length > 0) {
setTableData(dataArr)
}
// TODO Properly handle this data now that I'm getting it in. It's only 9 records though.
}
data()
}
我没有正确退出 useEffect 吗?
无论如何,谢谢各位。

最佳答案

如果你有一个

useEffect(() => {}, itemArray)
并且您修改 itemArray,您将收到此错误。这可能只是一个错字。当我有一份我在州内使用的元素 list 时,我这样做了。它没有捕获它,因为它是一个数组。您需要在 itemArray 周围使用 []。
useEffect(() => {}, [itemArray])
真正的问题是您的依赖数组改变了大小,而不是您在数组中添加了另一个项目。修正这个错字,你应该没问题。

关于javascript - "The final argument passed to useEffect changed size between renders",但我不认为是这样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59864338/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com