在任何地方都找不到有关此内容的文档。这会导致useEffect
再次运行吗?我不希望它获取两次,这会在我的代码中引起一些问题。
import React, { useEffect } from 'react'
import { useHistory } from 'react-router-dom'
const myComponent = () => {
const { push } = useHistory();
useEffect( () => {
console.log(" THIS SHOULD RUN ONLY ONCE ");
fetch(/*something*/)
.then( () => push('/login') );
}, [push]);
return <p> Hello, World! </p>
}
从测试来看,它永远不会运行两次。有这种情况吗?出于问题的考虑,假定组件的父级经常重新渲染,因此该组件也是如此。
push
函数在渲染之间似乎没有改变-会吗? 最佳答案
巧,您编写useEffect
的方式是绝对正确的。而且useEffect
不会无限次触发。如您所说,push
函数在渲染之间不会改变。
因此,您已在push
deps列表上正确添加了useEffect
,以便在fetch
请求之后被调用。我看不到您的代码中有任何错误。