Вызывает ли [history.push] в массиве зависимостей useEffect повторную визуализацию? - PullRequest
2 голосов
/ 07 августа 2020

Нигде не могу найти документации по этому поводу. Приведет ли это к тому, что 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 Ответ

1 голос
/ 07 августа 2020

Ciao, как вы пишете useEffect абсолютно правильно. И useEffect не будет срабатывать бесконечное количество раз. Как вы сказали, функция push не меняется между рендерами.

Итак, вы правильно добавили push в список useEffect deps для вызова после запроса fetch. Я не вижу ошибок в вашем коде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...