使用Redux

时间:2018-11-20 17:57:04

标签: reactjs firebase redux

我刚刚开始使用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 :(得分:2)

您需要使用redux thunk或sagas之类的自定义中间件才能将操作创建为函数而不是普通对象。

npm i redux-thunk

然后将其导入到商店所在的文件中。

import thunk from 'redux-thunk'

并将其添加为applyMiddleware函数的参数,并将applyMiddleware添加为createStore函数的参数。

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

这应该使您能够在操作中运行异步功能。