useEffect 依赖数组中的 [history.push] 是否会导致重新渲染?

Ade*_*mes 7 javascript reactjs react-router react-router-dom

无法在任何地方找到有关此的文档。这会导致useEffectEVER 再次运行吗?我不希望它获取两次,这会导致我的代码出现一些问题。

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>
}
Run Code Online (Sandbox Code Playgroud)

从测试来看,它永远不会运行两次。有这种情况吗?

为了这个问题,假设组件的父组件经常重新渲染,所以这个组件也是如此。该push功能似乎不会在渲染之间改变 - 会吗?

Gio*_*ito 4

再见,你写的方式useEffect绝对正确。并且useEffect不会无限次触发。正如您所说,push函数在渲染之间不会改变。

因此,您已正确添加pushuseEffectdeps 列表中,以便在fetch请求后被调用。我在你的代码中看不到任何错误。