useContext returns undefined (React Native, Expo)



我试图在登录后检索要显示的用户数据(姓名、电子邮件(,但我一直得到undefined,但每当我console.log( user )时,我都会看到所有数据,包括姓名和电子邮件

Context.js

import React  from 'react';
const AuthContext = React.createContext();
export default AuthContext;

App.js

import AuthContext from './context';
const App = () => {
const [user, setUser] = useState();
return (
<AuthContext.Provider value={{user, setUser}}>
<NavigationContainer>
{ user ? <AppNavigator /> : <AuthNavigator/> }
</NavigationContainer>
</AuthContext.Provider>
)
} 

Panel.js

const Panel = ({navigation}) => {
const { user } = useContext(AuthContext);

return (
<View style={styles.container}>
<Text>Name {user.name} </Text>
<Text>Email {user.email} </Text>
</View>
)
}

登录.js

const handleSubmit = async ( { email, password } ) =>{
const response = await axios.post(userLogin, 
{ 
email, 
password,
})
.then((response) => { 
const user = response.data;
authContext.setUser(user);
// console.log(response.data);
})
.catch(error => { 
console.log(error);
}); 
}

控制台日志(用户(结果

Object {
"token": "27|YUHmPPwmRkgQRFkAmbEpSjweXN6QI8eR7O1bHhfd",
"user": Object {
"id": 2,
"name": "maria",
"email": "maria@mail.com",
"user_type": "vendor",
"vendor_address": "55 bola way road",
"vendor_fullname": "maria smith",
},
}

感谢的帮助

这可能是因为最初呈现用户是未定义的,所以您无法访问电子邮件和您可以使用user?的名称?。使用者电子邮件的名字是这样的。为了验证我所说的,尝试在App.js中给一个静态用户,你会看到错误已经消失

最新更新