#node.js #react-native #authentication #axios #expo
Вопрос:
У меня была проблема с приложением, которое я разрабатываю в течение некоторого времени. В основном, используя API, созданный с помощью express, я создал пространство для подключения с expo проблема в том, что после подключения данные извлекаются из axios и сохраняются в локальном хранилище благодаря AsyncStorage, это означает, что если я изменю данные пользователя, они не будут обновляться, пока не восстановятся, и я не знаю, как использовать axios или fetch вместо AsyncStorage.
Вот мой поставщик аутентификации, вызывающий эту проблему :
https://gist.github.com/quentinsvn/145609c86d2d42e6825384a16a77f352
Это константа «getAuthState ()«, которая позволяет восстанавливать данные пользователей после вызова константой «handleLogin ()«.
// Get Auth state
const getAuthState = async () => {
try {
//GET TOKEN amp;amp; USER
let token = await AsyncStorage.getItem(TOKEN_KEY);
let user = await AsyncStorage.getItem(USER_KEY);
user = JSON.parse(user);
if (token !== null amp;amp; user!== null) await handleLogin({token, user});
else await handleLogout();
return {token, user};
} catch (error) {
throw new Error(error)
}
};
// Handle Login
const handleLogin = async (data) => {
try{
//STORE DATA
let {token, user} = data;
let data_ = [[USER_KEY, JSON.stringify(user)], [TOKEN_KEY, token]];
await AsyncStorage.multiSet(data_);
//AXIOS AUTHORIZATION HEADER
axios.defaults.headers.common["Authorization"] = `Bearer ${data.token}`;
//DISPATCH TO REDUCER
dispatch({type: LOGGED_IN, user:data.user});
}catch (error) {
throw new Error(error);
}
};
Я также сделал редуктор и услуги аутентификации доступными для gist.
Конкретная идея заключалась бы в обновлении пользовательских данных в режиме реального времени вместо этого с помощью axios или функции fetch ().
Заранее благодарю вас.