AsyncStorage имеет странные символы в React-Native - PullRequest
0 голосов
/ 14 апреля 2020

Я пытаюсь сохранить мой ключ авторизации пользователей, используя AsyncStorage, но всякий раз, когда я делаю, я получаю странные символы. Вот мой соответствующий код:

async function retrieveItem(key) {
    try {
        let retrievedItem =  await AsyncStorage.getItem(key).then(value => retrieveItem = value);
        return retrievedItem;
    } catch (error) {
        console.log(error.message);
    }   
    return
}

let test = retrieveItem('@authentication')

class AppNavigation extends Component {
    render() {
        console.log(test)
...

Это вывод, который я получаю для теста. Предмет, который мне нужен, находится под _55, и я могу получить его, выполнив console.log(test._55). Я просто хотел убедиться, что я делаю это неправильно. Ключ всегда будет _55 для асин c хранилища?

{"_40": 0, "_55": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiI1ZTk1ODM3NDJlZDI1YjAxMWM4MWFiNWEiLCJpYXQiOjE1ODY4NTY4MjB9.yK0WYuZj7_2Nih7phisi5rmm0y7gF__PMRMEAafIkFk", "_65": 1, "_72": null}

Ответы [ 2 ]

0 голосов
/ 14 апреля 2020

это фактически Указатель Обещания, вы должны разрешить Обещание, ожидая

использовать его в классах

async  componentDidMount() {
       let test =await retrieveItem('@authentication');
       console.log(test);
      }

использовать его в перехватчиках

useEffect(async () => {
    let test =await retrieveItem('@authentication');
           console.log(test);
  }); 
0 голосов
/ 14 апреля 2020

Вы должны заметить, что используете async / await и .then вместе, оба делают одно и то же. Попробуйте вместо этого этот код:

async function retrieveItem(key) {
    try {
        let retrievedItem =  await AsyncStorage.getItem(key);
        return retrievedItem;
    } catch (error) {
        console.log(error.message);
    }   
    return
}

let test = await retrieveItem('@authentication')

class AppNavigation extends Component {
    render() {
        console.log(test)

Редактировать: полученный вами объект является обещанием, и вы можете получить его значение, выполнив синтаксис async / await или вызвав .then (...)

...