React native React Native useContext钩子返回未定义的
我对react native和context Api还不熟悉,因此非常感谢您的帮助。启动应用程序时,我看到undefined不是一个对象React native React Native useContext钩子返回未定义的,react-native,context-api,React Native,Context Api,我对react native和context Api还不熟悉,因此非常感谢您的帮助。启动应用程序时,我看到undefined不是一个对象\u useContext.appUser错误。下面是我的代码。 App.js 从'react native'导入{AsyncStorage}; 从'@react navigation/native'导入{NavigationContainer} 从“./src/navigators/AuthStackNavigator”导入AuthStackNavigator
\u useContext.appUser
错误。下面是我的代码。
App.js
从'react native'导入{AsyncStorage};
从'@react navigation/native'导入{NavigationContainer}
从“./src/navigators/AuthStackNavigator”导入AuthStackNavigator
从“./src/themes/light”导入{LightTheme}
从“./src/navigators/UserTabsNavigator”导入UserTabsNavigator
从“./src/auth/AuthProvider”导入AuthProvider
从“./src/auth/AuthProvider”导入{AuthContext};
导出默认函数App(){
const[loggedIn,setLoggedIn]=useState(false);
const{appUser}=useContext(AuthContext);
log('context object'+appUser);
useffect(()=>{
AsyncStorage.getItem('user')。然后(userString=>{
if(用户字符串){
setLoggedIn(真)
}
}).catch(错误=>{
console.log(错误);
})
})
返回(
{loggedIn?:
}
);
};
AuthProvider.js
import React, { useState, createContext } from 'react';
import { AsyncStorage } from 'react-native';
export const AuthContext = createContext();
const AuthProvider = ({ children }) => {
const [user, setUser] = useState(null);
const loginUser = () => {
const fakeUser = { username: 'Test' }
AsyncStorage.setItem('user', JSON.stringify(fakeUser));
setUser(fakeUser);
}
const logoutUser = () => {
AsyncStorage.removeItem('user');
setUser(null);
}
return (
<AuthContext.Provider value={{
appUser: user,
login: loginUser,
logout: logoutUser
}}>
{children}
</AuthContext.Provider>
)
}
export default AuthProvider;
import React,{useState,createContext}来自“React”;
从“react native”导入{AsyncStorage};
export const AuthContext=createContext();
const AuthProvider=({children})=>{
const[user,setUser]=useState(null);
常量登录用户=()=>{
const fakeUser={username:'Test'}
AsyncStorage.setItem('user',JSON.stringify(fakeUser));
设置用户(伪造用户);
}
const logoutUser=()=>{
AsyncStorage.removietem('user');
setUser(空);
}
返回(
{儿童}
)
}
导出默认AuthProvider;
我真的很感激这里的任何帮助。我已经为这个问题挣扎了一段时间了。我被困在这里了 我刚刚发现我必须将``{loggedIn?:}``包装到另一个组件中。
import React, { useState, createContext } from 'react';
import { AsyncStorage } from 'react-native';
export const AuthContext = createContext();
const AuthProvider = ({ children }) => {
const [user, setUser] = useState(null);
const loginUser = () => {
const fakeUser = { username: 'Test' }
AsyncStorage.setItem('user', JSON.stringify(fakeUser));
setUser(fakeUser);
}
const logoutUser = () => {
AsyncStorage.removeItem('user');
setUser(null);
}
return (
<AuthContext.Provider value={{
appUser: user,
login: loginUser,
logout: logoutUser
}}>
{children}
</AuthContext.Provider>
)
}
export default AuthProvider;