我正在使用Firebase作为后端。目前,我正在创建该功能,以在应用程序重启后自动登录用户。这是我在App.js中所做的
export default function App() {
const [user, setUser] = useState();
// Listen for authentication state to change.
firebase.auth().onAuthStateChanged((user) => {
if (user != null) {
console.log("We are authenticated now!");
setUser(user);
} else {
console.log("haven't got authenticated");
}
});
return (
<AuthContext.Provider value={{ user, setUser }}>
<NavigationContainer theme={navigationTheme}>
{user ? <AppNavigator /> : <AuthNavigator />}
</NavigationContainer>
</AuthContext.Provider>
);
}
这很好地实现了持久的登录状态。但是,AppNavigator的一个屏幕显示用户信息。我正在通过useContext传递用户。
const { user, setUser } = useContext(AuthContext);
<ListItem
title={user.user.displayName}
subTitle={user.user.email}
image={require("../assets/mosh.jpg")}
/>
导航到此屏幕后,我一直收到此错误:TypeError:undefined不是对象(正在评估“ user.user.displayName”)。
我想知道这是否意味着用户没有在另一个组件中更新?