Как очистить useEffect правильно при использовании history.pu sh? - PullRequest
0 голосов
/ 27 января 2020

Я использую response-redux и перенаправляю пользователей на основании значения prop. Как я могу обработать ошибку, выданную в консоли?

Я использовал useEffect для того, чтобы вы sh пользователей получали разные компоненты на основе реквизита. Я не уверен, что это правильный способ сделать это.

  useEffect(() => {
    if (isAuthenticated) {
      history.push("/");
    } else if (signup) {
      history.push("/signup");
    }
  });

Невозможно выполнить обновление состояния React на отключенном компоненте. Это неоперация, но она указывает на утечку памяти в вашем приложении. Чтобы исправить, отмените все подписки и асинхронные задачи в функции очистки useEffect.

Ответы [ 2 ]

0 голосов
/ 27 января 2020

useEffect (): после и для каждого цикла рендеринга

useEffect (() => {}); // без аргументов действует как componentDidUpdate

useEffect (() => {}, []); // с пустым массивом аргумент действует как componentDidMount

(запускается только один раз после первого рендеринга)

 useEffect(() => {
    if (isAuthenticated) {
      history.push("/");
    } else if (signup) {
      history.push("/signup");
    }
  },[isAuthenticated]); //passing a value will remove the error that you are receiving and check for the variable responsible for change , if changes are found it will run useEffect callback.
0 голосов
/ 27 января 2020

Если мы предоставляем переменную isAuthenticated для useEffect, она будет работать только при изменении isAuthenticated

 useEffect(() => {
    if (isAuthenticated) {
      history.push("/");
    } else if (signup) {
      history.push("/signup");
    }
  },[isAuthenticated]); // pass isAuthenticated it will check changes of isAuthenticated and run our useEffect callback if changes found
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...