gpt4 book ai didi

reactjs - 有没有办法可以在基于类的组件中使用自定义 Hook ?

转载 作者:行者123 更新时间:2023-12-04 08:13:11 34 4
gpt4 key购买 nike

我有这个钩子(Hook):

import { useEffect, useState } from 'react';
import { auth } from "../firebase/auth-service"

const useFirebaseAuthentication = () => {
const [authUser, setAuthUser] = useState(null);

useEffect(() => {
const unlisten = auth.onAuthStateChanged(
authUser => {
authUser
? setAuthUser(authUser)
: setAuthUser(null);
},
);
return () => {
unlisten();
}
});

return authUser
}

export default useFirebaseAuthentication;
我这样使用:
const authUser = useFirebaseAuthentication();
有没有办法可以在基于类的组件中使用这个钩子(Hook) useFirebaseAuthentication() ?

最佳答案

基于类的组件直接不支持 Hooks。
阅读 React-FAQ
您可以创建 Higher Order Component , 像这样:

import React from 'react';
import { useFirebaseAuthentication} from '../hooks/useFirebaseAuthentication';

export const withFireBaseAuthHookHOC = (Component: any) => {
return (props: any) => {
const authUser = useFirebaseAuthentication();

return <Component authUser ={authUser} {...props} />;
};
};
现在只需用这个 HOC 包装你的基于类的组件.
.

关于reactjs - 有没有办法可以在基于类的组件中使用自定义 Hook ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65843692/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com