Из документов :
Примечание: currentUser также может быть нулевым, поскольку объект аутентификации не завершил инициализацию. Если вы используете наблюдателя для отслеживания статуса входа пользователя, вам не нужно обрабатывать этот случай.
Вот почему он выдает ошибку в случае прямых URL, но не иначе. Вы можете обойти это путем условного рендеринга userId
в заголовке:
const user = firebase.auth().currentUser;
return user && (
<p>{user.uid}</p>
)
Это предполагает, что изменение в Аутентификации вызовет повторный рендеринг компонента из одного из более высоких компонентов. Как отмечается в заметке, вы можете использовать обратный вызов onAuthStateChanged
, чтобы убедиться, что компонент выполняет рендеринг.
const userContext = useContext(UserContext);
firebase.auth().onAuthStateChanged(user => {
// Assuming that it has a setUser function
userContext.setUser(user);
});
и использовать значение из контекста в заголовке.
Документы для контекста