Я новичок, чтобы реагировать на родной язык, и я пытаюсь создать систему аутентификации для своего приложения с помощью expo cli. Я думаю, что теперь я понимаю это в целом, но все статьи, которые я прочитал, похоже, говорят, что вы должны проверить, существует ли токен пользователя в AsyncStorage, и если он есть, затем перенаправить пользователя на страницу Home / Account и пропустить вход в систему, но токен никогда не сравнивается со специальным ключом или чем-то еще. Вот пример кода, который нужно вернуть в статьях ...
return (
<AuthContext.Provider value={authContext}>
<Stack.Navigator>
{state.userToken == null ? (
<Stack.Screen name="SignIn" component={SignInScreen} />
) : (
<Stack.Screen name="Home" component={HomeScreen} />
)}
</Stack.Navigator>
</AuthContext.Provider>
)
Я создаю приложение с ежемесячным членским взносом, поэтому мне нужно проверить, существует ли userToken и действительно ли он отправляет его на серверную часть для проверки, а затем возвращать данные пользователя, как в приведенном ниже коде, так как это то, что Я сделал это для версии веб-сайта, которая использовала реакцию, и если userToken не существует, я просто отправляю их на страницу входа?
const [isAuthenticated, setIsAuthenticated] = useState(false)
const [userData, setUserData] = useState(null)
const handleUserToken = () => {
// fetch call that sends userToken to be validated and returns {userData, isAuthenticated}
setSomeState(userData)
return isAuthenticated
}
state.userToken == setIsAuthenticated(false) ? setIsAuthenticated(handleUserToken())
return (
<AuthContext.Provider value={authContext}>
<Stack.Navigator>
{!state.isAuthenticated ? (
<Stack.Screen name="SignIn" component={SignInScreen} />
) : (
<Stack.Screen name="Home" component={HomeScreen} />
)}
</Stack.Navigator>
</AuthContext.Provider>
);
Надеюсь, этот пример имеет смысл, я бы передал userData компонентам, используя также useContext.