【发布时间】:2021-09-30 07:11:44
【问题描述】:
我有一个自定义身份验证挂钩,旨在提供用户和加载状态,以及一些基于用户的操作(例如退出)。这是我的代码:
type UserActions = {
signOut(): Promise<void>;
};
const useUser = (): [
firebase.User | undefined | null,
UserActions,
boolean,
firebase.auth.Error | undefined
] => {
const auth = firebase.auth();
const [firebaseUser, loading, error] = useAuthState(auth);
return [firebaseUser, { signOut: firebase.auth().signOut }, loading, error];
};
export default useUser;
当我在调用钩子后在另一个文件中使用signOut() 函数时,我收到错误Unhandled Rejection (TypeError): Cannot read property 'then' of undefined。
但是,当我简单地将我的钩子改成这样时:
type UserActions = {
signOut(): Promise<void>;
};
const useUser = (): [
firebase.User | undefined | null,
UserActions,
boolean,
firebase.auth.Error | undefined
] => {
const auth = firebase.auth();
const [firebaseUser, loading, error] = useAuthState(auth);
const signOut = () => {
return firebase.auth().signOut();
};
return [firebaseUser, { signOut }, loading, error];
};
export default useUser;
效果很好。这两种情况有什么区别?不确定我是否遗漏了有关箭头功能如何工作的内容,或者可能是打字方面的内容?
谢谢!
【问题讨论】:
标签: reactjs firebase firebase-authentication react-hooks arrow-functions