Объяснение
Я пытаюсь использовать AsyncStorage для сохранения токена во время входа в систему. Токен получен из моего бэкэнда в качестве ответа после того, как пользователь нажмет кнопку «Вход». После успешного входа в систему экран переходит к ProfileScreen, где я пытаюсь получить сохраненный токен.
Проблема
Когда я пытаюсь получить элемент в журнале ProfileScreen и в консоли, кажется, что он получен объект Promise, заполненный другими объектами, и внутри я могу видеть свою ценность. Как мне получить стоимость? (или я должен сказать, как выполнить обещание :))
Код
Утилиты / AsyncStorage. js (Здесь у меня есть вспомогательные функции для сохранения и извлечения элемента)
const keys = {
jwtKey: 'jwtKey'
}
const storeItem = async (key, item) => {
try {
var jsonOfItem = await AsyncStorage.setItem(key, JSON.stringify(item));
console.log('Item Stored !');
return jsonOfItem;
} catch (error) {
console.log(error.message);
}
};
const retrieveItem = async key => {
try {
const retrievedItem = await AsyncStorage.getItem(key);
const item = JSON.parse(retrievedItem);
console.log('Item Retrieved !');
return item;
} catch (error) {
console.log(error.message);
}
return;
};
Экран входа в систему. js (Здесь после нажатия кнопки входа в систему я получаю ответ от моего бэкенда с токеном)
const LoginScreen = ({componentId}) => {
const [email, setEmail] = useState('');
const [password, setPassword] = useState('');
const loginPressed = async () => {
await axios
.post('localhost', {
email,
password,
})
.then(function(res) {
console.log(res);
storeItem(keys.jwtKey, res.data.token);
push(componentID, views.profileScreen());
})
.catch(function(error) {
console.log(error);
});
};
ProfileScreen. js (На этом экране я пытаюсь получить токен, потому что буду его использовать)
const ProfileScreen = ({componentID}) => {
let testingAsync = retrieveItem(keys.jwtKey);
console.log(testingAsync);
Журнал консоли дает мне объект обещания, заполненный другими объектами.
Promise{_40:0, _65:0 , _55:null, _72:null}
А внутри _55 я могу найти значение токена.