getItemAsync возвращает значение null или предыдущее значение

#reactjs #react-native

Вопрос:

Я использую expo SecureStore, и он всегда возвращает старое значение или значение null в первый раз, на экране входа в систему, я отправляю запрос на получение токена и сохранение токена

                   fetch("https://localhost/api/phlebotomy/login?email="   email   "amp;password="   password, requestOptions)
                    .then((response) => response.json())
                    .then((json) => {
                      if (json.token_type === "bearer") {
                       
                        // console.log(json.access_token);
                        token = json.access_token;
                        save('secure_token', token);
                        
                          navigation.navigate('Home');
                      }else{
                        Alert.alert(json.error);
                      }
                        })
                        .catch((error) => {
                          console.error(error);
                         })
 

И пытаюсь вывести свой жетон на разные экраны:

 const getToken = async () => {
  try {
    const value = await SecureStore.getItemAsync('secure_token')
    if(value !== null) {
      return value;
    }else{
      console.log('Empty Token');
    }
  } catch(e) {
    // error reading value
  }
}
 

Я использую эту функцию для хранения своего токена

 async function save(key, value) {
  Alert.alert("Successfully Logged In!");
  await SecureStore.setItemAsync(key, value);
}
 

Когда я закрываю приложение и открываю его снова, оно возвращает старое значение, сохраненное ранее. Не могли бы вы, пожалуйста, помочь мне, как я могу это решить?

Ответ №1:

Я решил свою проблему с заменой fetch на axios. И сохраните токен в заголовке axios по умолчанию

пример:

     axios.defaults.headers.common['Authorization'] =
      'Bearer '   response.data.response.access_token;