首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >React React.useEffect errol

React React.useEffect errol
EN

Stack Overflow用户
提问于 2020-02-06 03:41:21
回答 2查看 73关注 0票数 0

React React.useEffect有一个缺少的依赖项:‘medis.id’。要么包含它,要么删除依赖数组Reactive-钩子/详尽的-deps。我项目中的许多地方都出现了这个错误。

图像样本

代码语言:javascript
复制
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);
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-02-06 03:44:31

您需要在params.id的第二个参数数组中传递useEffect (因为在useEffect中使用它)。这应该能解决这个问题。

代码语言:javascript
复制
React.useEffect(() => {
    articleFetchById(params.id);
  }, [articleFetchById, params.id]);
票数 1
EN

Stack Overflow用户

发布于 2020-02-06 05:11:21

理想情况下,您应该包括在useEffect钩子中使用的所有依赖项,因为如果不使用,可能会错过一些功能。

目前最好的解决方案是在https://reactjs.org/docs/hooks-rules.html#eslint-plugin中使用ES Lint插件,将react钩子/详尽-deps标记为警告。

代码语言:javascript
复制
"react-hooks/exhaustive-deps": "warn"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60087401

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档