React Hook React.useEffect errol - PullRequest
       62

React Hook React.useEffect errol

0 голосов
/ 06 февраля 2020

React Hook React.useEffect отсутствует зависимость: 'params.id'. Либо включите его, либо удалите массив зависимых реактив-хуков / исчерпывающий-deps. Многие места в моем проекте получили эту ошибку.

Образец изображения

import React, { Fragment } from "react";
import ArticleDetails from "./List";
import { connect } from "react-redux";
import {
  articleFetchById,
  articleFetch,
  articleFetchByChannel
} from "../../../redux/action/articles";

const Article = ({
  articles,
  articleFetchById,
  match: { params },
  auth,
  articleFetch,
  articleFetchByChannel
}) => {
  React.useEffect(() => {
    articleFetchById(params.id);
  }, [articleFetchById]);
  React.useEffect(() => {
    articleFetch();
  }, [articleFetch]);
  React.useEffect(() => {
    articleFetchByChannel();
  }, [articleFetchByChannel]);
  return (
    <Fragment>
      <ArticleDetails articles={articles} auth={auth} matchId={params.id} />
    </Fragment>
  );
};
const mapStateToProps = state => {
  return {
    articles: state.articles,
    auth: state.auth
  };
};
export default connect(mapStateToProps, {
  articleFetchById,
  articleFetch,
  articleFetchByChannel
})(Article);

Ответы [ 2 ]

1 голос
/ 06 февраля 2020

Вам нужно передать params во второй аргумент массива useEffect. Это должно исправить предупреждение.

React.useEffect(() => {
    articleFetchById(params.id);
  }, [articleFetchById, params]);
0 голосов
/ 06 февраля 2020

В идеале вы должны включить все зависимости, которые вы используете в ловушке useEffect, потому что, если вы не используете, вы можете пропустить некоторые функции.

Лучшее решение сейчас - использовать плагин ES Lint в https://reactjs.org/docs/hooks-rules.html#eslint -plugin , пометить реакционные крючки / исчерпывающие задержки как предупреждения.

"react-hooks/exhaustive-deps": "warn"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...