Я пытаюсь использовать AsyncStorage в моем собственном приложении для реагирования и не знаю, почему не работает.
В основном я хочу, чтобы индексированный массив (или любая пара ключ-значение) хранился в asyncstorage с истинным или ложным значением для каждого добавленного элемента.
import {AsyncStorage} from 'react-native';
....
componentDidMount() {
this.storeData('favourites', []);
}
addOrRemove(id) {
let favourites = this.getData('favourites');
console.log('favourites getted: ', favourites);
favourites[id] = favourites[id] ? false : true; //this logic is working fine
this.storeData('favourites', favourites);
}
getData и storeData:
storeData = (key, value) => async () => {
try {
await AsyncStorage.setItem(key, value);
} catch (e) {
// saving error
}
};
getData = key => async () => {
try {
const value = await AsyncStorage.getItem(key)
return value;
} catch(e) {
// error reading value
}
};
Это то, что я получаю, когда делаю console.log ('избранное получено:', избранное);
favourites getted: function _callee2() {
var value;
return _regenerator.default.async(function _callee2$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
_context2.prev = 0;
_context2.next = 3;
return _regenerator.default.awrap(_reactNative.AsyncStorage.getItem(key));
case 3:
value = _context2.sent;
return _context2.abrupt("return", value);
case 7:
_context2.prev = 7;
_context2.t0 = _context2["catch"](0);
case 9:
case "end":
return _context2.stop();
}
}
}, null, null, [[0, 7]]);
}
Когда кто-то нажимает на определенную кнопку, запускается метод addOrRemove(id)
. Я хочу получить массив, который я сохранил в моем AsyncStorage, и указать истину или ложь в позиции идентификатора этого массива.
Почему я получаю эту функцию из AsyncStorage, а не из индексированного массива, который мне нужен?
Я думаю, что это может быть проблема async / await, но не знаю, в чем проблема.