我刚刚开始使用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()))
我不确定自己在做什么错。
答案 0 :(得分:2)
您需要使用redux thunk或sagas之类的自定义中间件才能将操作创建为函数而不是普通对象。
npm i redux-thunk
然后将其导入到商店所在的文件中。
import thunk from 'redux-thunk'
并将其添加为applyMiddleware函数的参数,并将applyMiddleware添加为createStore函数的参数。
const store = createStore(rootReducer,
applyMiddleware(
thunk
)
);
这应该使您能够在操作中运行异步功能。