Я использую AsyncStorage для установки элемента и получения его с помощью метода getItem(). Мой код выглядит следующим образом:
import React, { Component } from 'react';
import { View } from 'react-native';
import { Container, Left, Title, Header, Body, Right, Content, Text, Button } from 'native-base';
import AsyncStorage from '@react-native-community/async-storage';
class Counter extends Component {
componentDidMount() {
AsyncStorage.setItem('name' , 'abc');
}
getItemData() {
console.info(AsyncStorage.getItem('name'))
}
render() {
return (
<Container>
<Header>
<Left />
<Body>
<Title>Test</Title>
</Body>
<Right />
</Header>
<Content style = {{ margin: 8 }}>
<View style = {{ flexDirection: "row", alignSelf: "center" }}>
<Button onPress = {() => this.getItemData()}><Text> getItem </Text></Button>
</View>
</Content>
</Container>
);
}
}
export default Counter;
Но вместо того, чтобы получить «abc» в моей консоли, я получаю это:
{"_U": 0, "_V": 0, "_W": null, "_X": null}
Как получить «abc» в моей консоли?
🤔 А знаете ли вы, что...
JavaScript был первоначально создан для улучшения интерактивности веб-страниц.
Добавьте async
и await
:
async getItemData() {
const result = await AsyncStorage.getItem('name');
console.info(result);
}
async componentDidMount() {
await AsyncStorage.setItem('name' , 'abc');
}
getItem возвращает обещание, которое либо разрешается в сохраненное значение, когда данные найдены для данного ключа, либо возвращает null в противном случае.
Чтение строкового значения:
async getAsyncData() {
await AsyncStorage.getItem('name').then(val => {
if (val !== null) {
console.info(value);
}
})
}
Чтение значения объекта:
async getAsyncData() {
await AsyncStorage.getItem('name').then(val => {
if (val !== null) {
console.info(JSON.parse(val));
}
})
}