React-Native — Создание уровня абстракции для AsyncStorage

#reactjs #react-native #asyncstorage

#reactjs #react-native #asyncstorage

Вопрос:

Я пытаюсь найти способ создать уровень абстракции для использования AysncStorage в react-native. Я пытался создать класс с помощью методов const, но при его вызове я получаю эту ошибку:

 DOMNodes from htmlparser2 Array [
  Object {
    "data": "Error Hapened: TypeError: _reactNative.default.setItem is not a function",
    "next": null,
    "parent": null,
    "prev": null,
    "type": "text",
  },
  

Это код для js, пытающегося получить доступ AysncStorage :

 import AsyncStorage from 'react-native';

export const getClient = () => {
    return _retrieveData("loggedClient");
}
export const setClient = (client) => {
    _storeData("loggedClient", JSON.stringify(client));
}

export const clear = () => {
    AsyncStorage.clear();
}

_retrieveData = async (id) => {
    try {
        const value = await AsyncStorage.getItem("@App:" id);
        if (value !== null) {
            // We have data!!
            console.log("found: "   id   "="  value);
            return value;
        } else {
            console.log("Not found: "   id);
        }
    } catch (error) {
        console.log("Failure retrieving "  id  " error: "   error)
    }
};

_storeData = async (id, value) => {
    try {
        await AsyncStorage.setItem('@App:' id, value);
        console.log("saved");
    } catch (error) {
        console.log("Failure saving: "   error);
    }
};
  

есть идеи о том, как я могу создать класс абстракции в react-native для взаимодействия с AsyncStorage ?

Комментарии:

1. _retrieveData не возвращается value

2. Спасибо @DacreDenny, хотя это не было основным случаем проблемы, возврат отсутствовал. Я скорректировал пример.

Ответ №1:

Попробуйте изменить способ импорта AysncStorage на следующий:

 import { AsyncStorage } from 'react-native';
  

Комментарии:

1. Отлично, рад, что смог помочь 😊