React native React Native useContext钩子返回未定义的

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

我对react native和context Api还不熟悉,因此非常感谢您的帮助。启动应用程序时,我看到undefined不是一个对象
\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;