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