Я использую Firebase
для аутентификации пользователей для моего приложения. Я создал формы SignIn
и SignUp
и могу успешно создавать новых пользователей и выполнять вход с сохраненными пользователями. Однако проблема заключается в том, что пользователь остается в состоянии после Reload
.
.
То, как я видел это в уроках, - это использование HOC
, как показано ниже, чтобы проверить, вошел ли текущий пользователь в систему.
const withAuthentication = Component => {
class WithAuthentication extends React.Component {
constructor(props) {
super(props);
this.state = {
authUser: null,
};
}
componentDidMount() {
this.listener = this.props.firebase.auth.onAuthStateChanged(
authUser => {
authUser
? this.setState({ authUser })
: this.setState({ authUser: null });
},
);
}
componentWillUnmount() {
this.listener();
}
render() {
return (
<AuthUserContext.Provider value={this.state.authUser}>
<Component {...this.props} />
</AuthUserContext.Provider>
);
}
}
return withFirebase(WithAuthentication);
};
export default withAuthentication;
Однако я собираюсь использовать новый React
Hooks
, чтобы устранить необходимость в HOCs
. Я уже удалил withFirebase()
HOC
, используя React Context
и useContext(FirebaseContext)
для доступа к одному экземпляру Firebase
. Есть ли способ использовать новый hooks
для имитации этого withAuthentication
HOC
внутри components
, который я создаю?
Я использую этот урок
https://www.robinwieruch.de/complete-firebase-authentication-react-tutorial/
Раздел «Обработка сеансов с компонентами высшего порядка» содержит эту часть.
Спасибо!