Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/464.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript &引用;传递给useEffect的最后一个参数在渲染之间更改了大小;,除了我没有';我想不会吧?_Javascript_Reactjs_Async Await_Axios_React Hooks - Fatal编程技术网

Javascript &引用;传递给useEffect的最后一个参数在渲染之间更改了大小;,除了我没有';我想不会吧?

Javascript &引用;传递给useEffect的最后一个参数在渲染之间更改了大小;,除了我没有';我想不会吧?,javascript,reactjs,async-await,axios,react-hooks,Javascript,Reactjs,Async Await,Axios,React Hooks,我想我以前从未收到过这样的错误: 传递给useEffect的最后一个参数在渲染之间更改了大小。此数组的顺序和大小必须保持不变 我已经在useffect()中执行了100次axios请求,使用useffect()的方式与componentDidMount()类似,但这是我第一次在async/wait中使用可重用函数,并将数据解析回useffect()。其他在线用户在他们的教程中也做了同样的事情,但他们从未提到过这个错误 const [tableData, setTableData] = useSt

我想我以前从未收到过这样的错误:

传递给useEffect的最后一个参数在渲染之间更改了大小。此数组的顺序和大小必须保持不变

我已经在
useffect()
中执行了100次axios请求,使用
useffect()
的方式与
componentDidMount()
类似,但这是我第一次在
async
/
wait
中使用可重用函数,并将数据解析回
useffect()
。其他在线用户在他们的教程中也做了同样的事情,但他们从未提到过这个错误

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()
    }, [])
我相信,它在抱怨我将
useffect()
作为第二个参数输入的空数组。但是,这个空数组没有改变。。。对吗?我试着用谷歌搜索它,但我找到了解决这个错误的方法。没有一个示例使用了
async
/
wait

我也尝试过,但没有成功:

    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,则会出现此错误。这可能只是一个打字错误。我这样做的时候,我有一个列表的项目,我是从国家使用。它没有捕捉到它,因为它是一个数组。在itemArray周围需要[]

useEffect(() => {}, [itemArray])

真正的问题是依赖项数组的大小发生了变化,而不是向数组中添加了另一项。修正这个输入错误,你会没事的。

你确定React抱怨的是特定的
useffect()
调用吗?如果你实际给出了不同大小的数组(你引用的代码没有,所有用法都有一个空数组),你会得到这个错误或者,如果您的逻辑改变了组件中钩子调用的顺序,并且恰好交换了两个
useffect
调用。确保组件中的钩子调用都不在分支中,对于每个渲染,调用的钩子的类型和顺序必须完全相同。除此之外,如果不演示问题,我们将无法帮助您,最好是使用堆栈片段(
[]
工具栏按钮)运行钩子。堆栈代码段支持React,包括JSX。旁注:您的
setData
功能有问题:它不能处理来自
data
的潜在拒绝,并且
data
不能确保它从不拒绝其承诺。您需要向
data()
添加一个
catch
调用,或者在
data
中使用
try
/
catch
来捕获其中可能发生的所有错误。Patrick,您是对的。我以为是这一个b/c,当我注释掉设置状态时,它消失了。但实际上是一个孩子接收数据。我想这不是我想会发生的事情。即使依赖项数组为空,也会抛出此警告。有人能解释一下吗?@AshTyson你什么意思?useEffect(()=>{},[])不会引发错误。不,应用程序的某些部分确实会引发此警告。当然,我们没有一个空函数作为第一个参数,我不知道你的意思。展示一些代码,我就可以看一看了。我不能把它全部发布在这里,因为它是专有的。但这里有一些截图。这很奇怪。它为同一行抛出了21个错误。