React Redux - Ошибка передачи нескольких расширений магазина в createStore () - PullRequest
0 голосов
/ 20 мая 2019

У меня есть приложение реагирования, работающее с избыточностью и редукцией, которое работает нормально.Мне нужно сохранить состояние хранилища при перезагрузке страницы, чтобы данные не терялись, поэтому я создал функцию, которая хранит данные в локальном хранилище, а затем возвращает данные, готовые для добавления в createStore (https://stackoverflow.com/a/45857898/801861). Хранение данныхработает нормально и возвращает объект, готовый для установки состояния. При добавлении объекта данных в createStore реагировать не удается скомпилировать с этой ошибкой:

Ошибка: похоже, вы передаете несколько расширений магазина для createStore (). Этоне поддерживается. Вместо этого объедините их в одну функцию

Вот ОШИБКА ВОЗВРАТА ТЕКУЩЕГО КОДА:

const store = createStore(reducers, LoadState, applyMiddleware(thunk) );

//Error: It looks like you are passing several store enhancers to createStore(). This is not supported. Instead, compose them together to a single function

Мой исходный код, который работал:

const store = createStore(reducers, applyMiddleware(thunk) );

Я попытался исправить это после некоторых похожих проблем, которые я обнаружил в сети, компилирует, но ломает код сайта, который изначально работал нормально:

const composeEnhancers = LoadState || compose;
const store = createStore(reducers, composeEnhancers( applyMiddleware(thunk) ) );
//Error: Actions must be plain objects. Use custom middleware for async actions.

Не уверен, что мне нужно изменить, чтобы заставить это работать, любая помощьоценили.

Ответы [ 2 ]

0 голосов
/ 20 мая 2019

Я подозреваю, что ваша проблема в вашем LoadState. Что это когда-нибудь? Вот рабочий createStore:

const store = createStore(
  reducers, 
  { counter: { count: 5 } },
  applyMiddleware(() => dispatch => { 
    console.log('Yoyoyo')

    return dispatch;
  }));

Надеюсь, это решит вашу проблему. Удостоверьтесь, что вы указали фактические значения начального состояния, а не какую-либо функцию или что-то еще, что является LoadState:)

0 голосов
/ 20 мая 2019

Вы можете использовать пакет, чтобы сохранить избыточное хранилище в локальном хранилище, и вам не нужно создавать собственную функцию: https://github.com/rt2zz/redux-persist

В первом примере пакета вы можетеузнайте, как использовать persistReducer () и persistStore () для сохранения вашего состояния, а затем автоматически выполнить регидратацию на странице обновления.

...