Получать данные из Firebase, используя Redux - PullRequest
0 голосов
/ 20 ноября 2018

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

export const addData = (database) => {
  return dispatch => database.ref.once('value').then((snapshot) => {
    dispatch({
      type: 'STORE_DATA',
      payload: snapshot.val()
    });
  }, (err) => {
    dispatch(
    {type: 'STORE_FAILED'})
  })
}

должно работать, однако я получаю сообщение об ошибке "Ошибка: действия должны быть простыми объектами. Использовать пользовательское промежуточное ПО для асинхронных действий"когда я звоню

store.dispatch(addData(firebase.database()))

Я не уверен, что делаю не так.

1 Ответ

0 голосов
/ 20 ноября 2018

Вам нужно использовать пользовательское промежуточное ПО, такое как Redux Thunk или Sagas, чтобы создать действие как функцию вместо простого объекта.

npm i redux-thunk

Затем импортируйте его в файл, в котором находится ваш магазин.

import thunk from 'redux-thunk'

И добавьте его в качестве аргумента к вашей функции applyMiddleware и applyMiddleware в качестве аргумента к вашей функции createStore.

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

Это должно дать вам возможность запускать асинхронную функцию.внутри вашего действия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...