React Hook useEffect 缺少依赖项:'History'

Posted

技术标签:

【中文标题】React Hook useEffect 缺少依赖项:\'History\'【英文标题】:React Hook useEffect has a missing dependency: 'History'React Hook useEffect 缺少依赖项:'History' 【发布时间】:2021-03-29 19:25:36 【问题描述】:

我有这个代码:

import useContext, useEffect, useState from 'react';
import useHistory from "react-router-dom";
import MasterContext from "../../Context/MasterProvider";
import LoginActions from "../../Context/Actions/LoginActions";

const useLoginForm = () => 
    const History = useHistory();
    const [login, setLogin] = useState();
    const AuthState: Authentication: Loading, Data, Error, AuthDispatch=useContext(MasterContext);
    const FormData = (event) => 
        const  target:  value, name   = event;
        setLogin(...login, [name]: value);
    ;

    const FormValid =
        !login.email?.length ||
        !login.password?.length;

    const FormSubmit = () => 
        LoginActions(login)(AuthDispatch);
    

    useEffect(() => 
        if(Data) 
            if(Data.user) 
                History.push("/");
            
        
    , [Data])

        return login, FormData, FormValid, FormSubmit, Loading, Error, Data;
    

export default useLoginForm;

它工作正常,但有警告。 “React Hook useEffect 缺少依赖项:'History'。要么包含它,要么删除依赖数组 react-hooks/exhaustive-deps”

【问题讨论】:

【参考方案1】:

您可以将历史记录添加为依赖项,除非更改路线,否则历史记录不会改变。因此,除非数据或历史记录发生更改,否则您的 useEffect 挂钩将不会运行。

  useEffect(() => 
        if(Data && Data.user) 
                History.push("/");
        
    , [Data, History])

【讨论】:

我该怎么做 在依赖数组中添加历史记录。 带有“数据”[数据,历史] History.push("/") 不更改历史记录吗?

以上是关于React Hook useEffect 缺少依赖项:'History'的主要内容,如果未能解决你的问题,请参考以下文章

React Hook useEffect 缺少依赖项:'props' 由于 useEffect 中有一行

React Hook useEffect 缺少依赖项(没有在 useEffect 中移动函数)

反应 | React Hook useEffect 缺少依赖项

React Hook useEffect 缺少依赖项:'props'

React Hook useEffect 缺少依赖项

React Hook useEffect 缺少依赖项:'list'