当我注销然后再次登录时,我看到这个效果被调用了两次。每次我注销并重新登录时,都称为额外时间。
我觉得我需要用一个清理函数来处理这个问题,但我不知道如何编写它。
这是我的钩子:
useEffect(() => {
console.log('RUNNING THE EFFECT');
function routeUser(user) {
// Redirect user somewhere depending on user state
}
function setupUser(user: User) {
// sets the user state object
routeUser(user);
}
if (!user) {
firebase.auth().onAuthStateChanged((authUser) => {
if (authenticatedUser) {
callGraphQLMethod({ variables: { uid: authUser.uid, phoneNumber: authUser.phoneNumber } })
.then(async (document) => {
setupUser(...);
});
}
});
} else {
// User object is already in state. use that instead
}
return () => {
// >>>>>>>> How do I clean all this up?
}
}, [callGraphQLMethod, setUser, user]);