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

时间:2020-08-07 13:23:52

标签: javascript reactjs react-router react-router-dom

在任何地方都找不到有关此文档的文档。这会导致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函数似乎在渲染之间没有变化-会吗?

1 个答案:

答案 0 :(得分:2)

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

因此,您已在push部门列表中正确添加了useEffect,以便在fetch请求之后被调用。我看不到您的代码中有任何错误。