Нативное приложение Expo React + Redux-Persist: проблема AsyncStorage - PullRequest
0 голосов
/ 28 октября 2019

Я только что начал новый Управляемый Экспо React Native (Экспо SDK 35 , React Native 0.5.9 ), используя redux-persist@6.0.0, но даже свежийЭкспо-проект с redux / redux-persist в настоящее время выдает ошибку ниже.


Используя AsyncStorage из react-native,

, мы получаем ошибку:

redux-persist: требуется config.storage. Попробуйте использовать один из предоставленных механизмов хранения import storage from 'redux-persist/lib/storage'


Используя AsyncStorage из @react-native-community/async-storage,

, мы получим ошибку:

[@ RNC / AsyncStorage]: NativeModule: AsyncStorage имеет значение null.


Использование storage из redux-persist/lib/storage,

мы получаем ошибку:

console.error: "redux-persist не удалось создать хранилище синхронизации. Откат к noop-хранилищу."


Вопрос: Как мы решаем эту проблему без извлечения? Спасибо!


redux-persist Код

Примечание: предыдущие попытки были закомментированы:

// Chose 1 of the 3 storages
// import { AsyncStorage } from "react-native";
// import AsyncStorage from '@react-native-community/async-storage';
import storage from 'redux-persist/lib/storage'

import { createMigrate, persistStore, persistReducer } from "redux-persist";
import reducer from "../reducers";

const persistConfig = {
    key: 'root',
    version: 0,
    storage,    // 'redux-persist/lib/storage'
}

// const persistConfig = {
//   key: 'root',
//   version: 0,
//   AsyncStorage,    // '@react-native-community/async-storage'
// }

const persistedReducer = persistReducer(persistConfig, reducer);

Ответы [ 2 ]

0 голосов
/ 29 октября 2019

Возможно, это проблема со связыванием библиотеки.

Убедитесь, что вы запустили react-native link @react-native-community/async-storage

Я бы также предложил перейти в вашу папку ios и запустить pod install.

Если вы не используете Cocoapods, посмотрите здесь для ручного связывания.

0 голосов
/ 28 октября 2019

Этот импорт предназначен для веб-приложения:

import storage from 'redux-persist/lib/storage'

Для React Native следует использовать следующие импорты:

import AsyncStorage from '@react-native-community/async-storage';
import { createMigrate, persistStore, persistReducer } from "redux-persist";
import reducer from "../reducers";

const persistConfig = {
    key: 'root',
    version: 0,
    //...
    storage: AsyncStorage
}

const persistedReducer = persistReducer(persistConfig, reducer);
...