Reactjs 正在取消useEffect中的订阅和异步任务

Reactjs 正在取消useEffect中的订阅和异步任务,reactjs,firebase,use-effect,Reactjs,Firebase,Use Effect,我使用firebase作为我的后端进行身份验证,但每当我使用电子邮件和密码登录时,会重定向到我的仪表板,警告[index.js:1警告:无法对未安装的组件执行React状态更新。这是一个no op,但表示应用程序内存泄漏。要修复此问题,请取消useEffect清理函数中的所有订阅和异步任务。at UpdateProfile]会出现,尽管我已从useEffect挂钩中取消订阅以下是我的代码 import React, { useContext, useEffect, useState } from

我使用firebase作为我的后端进行身份验证,但每当我使用电子邮件和密码登录时,会重定向到我的仪表板,警告[index.js:1警告:无法对未安装的组件执行React状态更新。这是一个no op,但表示应用程序内存泄漏。要修复此问题,请取消useEffect清理函数中的所有订阅和异步任务。at UpdateProfile]会出现,尽管我已从useEffect挂钩中取消订阅以下是我的代码

import React, { useContext, useEffect, useState } from "react";
import { auth } from "../firebase.js";

const AuthContext = React.createContext();

export function useAuth() {
  return useContext(AuthContext);
}

export function AuthProvider({ children }) {
  const [currentUser, setCurrentUser] = useState("");
  const [loading, setLoading] = useState(true);

  function signup(email, password) {
    return auth.createUserWithEmailAndPassword(email, password);
  }

  function login(email, password) {
    return auth.signInWithEmailAndPassword(email, password);
  }

  function logout() {
    return auth.signOut();
  }

  function forgotPassword(email) {
    return auth.sendPasswordResetEmail(email);
  }

  function updateEmail(email) {
    return currentUser.updateEmail(email);
  }

  function updatePassword(password) {
    return currentUser.updatePassword(password);
  }

  useEffect(() => {
    const unsubscribe = auth.onAuthStateChanged(user => {
      setCurrentUser(user);
      setLoading(false);
    });
    return () => {
      unsubscribe();
    };
  }, []);

  const value = {
    currentUser,
    signup,
    login,
    logout,
    forgotPassword,
    updateEmail,
    updatePassword,
  };

  return (
    <AuthContext.Provider value={value}>
      {!loading && children}
    </AuthContext.Provider>
  );
}

import React,{useContext,useffect,useState}来自“React”;
从“./firebase.js”导入{auth};
const AuthContext=React.createContext();
导出函数useAuth(){
返回useContext(AuthContext);
}
导出函数AuthProvider({children}){
const[currentUser,setCurrentUser]=useState(“”);
const[loading,setLoading]=useState(true);
功能注册(电子邮件、密码){
返回auth.createUserWithEmailAndPassword(电子邮件,密码);
}
功能登录(电子邮件、密码){
返回带有email和password(电子邮件,密码)的身份验证登录;
}
函数注销(){
返回auth.signOut();
}
功能放弃密码(电子邮件){
返回auth.sendPasswordResetEmail(电子邮件);
}
功能更新邮件(电子邮件){
返回currentUser.updateEmail(电子邮件);
}
函数updatePassword(密码){
返回currentUser.updatePassword(密码);
}
useffect(()=>{
const unsubscribe=auth.onAuthStateChanged(用户=>{
setCurrentUser(用户);
设置加载(假);
});
return()=>{
取消订阅();
};
}, []);
常量值={
当前用户,
报名,
登录,
注销,
放弃密码,
更新邮件,
更新密码,
};
返回(
{!正在加载(&children}
);
}