javascript - 类型错误 : middleware is not a function Error | v3 Migration Guide on React Redux Firebase

标签 javascript reactjs firebase redux react-redux-firebase

我正在使用这些包,但当我使用 create-react-app 创建新的 react 应用程序时,突然在中间件组合上出现此错误>。我有以下包。你能向我解释一下我在这里缺少什么吗? 帮助

也查看了本指南

Image Showing Error

"dependencies": {
    "firebase": "^7.4.0",
    "react": "^16.12.0",
    "react-dom": "^16.12.0",
    "react-redux": "^7.1.3",
    "react-redux-firebase": "^3.0.0",
    "react-router-dom": "^5.1.2",
    "react-scripts": "3.2.0",
    "redux": "^4.0.4",
    "redux-firestore": "^0.10.0",
    "redux-thunk": "^2.3.0"
  },

index.js

import ReactDOM from 'react-dom';

import { Provider } from "react-redux";
import { createFirestoreInstance } from "redux-firestore";
import { ReactReduxFirebaseProvider } from "react-redux-firebase";

import firebase from 'firebase/app'
import 'firebase/firestore'
import 'firebase/auth'
import createReduxStore from "./store/createReduxStore";

import App from './App';

const fbConfig = { // hidden for debug };
const rrfConfig = { userProfile: 'clients' };
firebase.initializeApp(fbConfig);
const store = createReduxStore()

const rrfProps = {
    firebase,
    config: rrfConfig,
    dispatch: store.dispatch,
    createFirestoreInstance
}

ReactDOM.render(
    <Provider store={store}>
        <ReactReduxFirebaseProvider {...rrfProps}>
            <App />
        </ReactReduxFirebaseProvider>
    </Provider>,
    document.getElementById('root')
);

createReduxStore.js

import { createStore, applyMiddleware } from "redux";
import { getFirebase } from "react-redux-firebase";
import { rootReducer } from "./reducers/rootReducer";
import thunk from "redux-thunk";

const initialState = {}

export default () => {
    return createStore(
        rootReducer,
        initialState,
        applyMiddleware([thunk.withExtraArgument(getFirebase)])
    )
}

rootReducer.js

import { combineReducers } from "redux"
import { firestoreReducer } from 'redux-firestore';
import { firebaseReducer } from 'react-redux-firebase'

export const rootReducer = combineReducers({
    firestore: firestoreReducer,
    firebase: firebaseReducer,
})

解决方案

import React from 'react';
import ReactDOM from 'react-dom';
import { createStore, applyMiddleware } from "redux";
import { Provider } from "react-redux";
import { createFirestoreInstance,getFirestore } from "redux-firestore";
import { ReactReduxFirebaseProvider, getFirebase } from "react-redux-firebase";
import thunk from "redux-thunk";

import firebase from 'firebase/app'
import 'firebase/firestore'
import 'firebase/auth'

import { rootReducer } from "./store/reducers/rootReducer";
import App from './App';

const fbConfig = {};
const rrfConfig = { userProfile: 'users' };
firebase.initializeApp(fbConfig);
//firebase.firestore();
const store = createStore(rootReducer, {}, applyMiddleware(thunk.withExtraArgument({getFirebase, getFirestore})))

const rrfProps = {
    firebase,
    config: rrfConfig,
    dispatch: store.dispatch,
    createFirestoreInstance
}

ReactDOM.render(
    <Provider store={store}>
        <ReactReduxFirebaseProvider {...rrfProps}>
            <App />
        </ReactReduxFirebaseProvider>
    </Provider>,
    document.getElementById('root')
);

最佳答案

您无法将中间件数组作为参数传递给 applyMiddleware。您应该将每个中间件作为单独的参数传递,请尝试以下操作:

export default () => {
    return createStore(
        rootReducer,
        initialState,
        applyMiddleware(thunk.withExtraArgument(getFirebase))
    )
}

关于javascript - 类型错误 : middleware is not a function Error | v3 Migration Guide on React Redux Firebase,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59098857/

相关文章:

javascript - 在一定高度后固定滚动 div,然后在到达其他 div 后停止?

javascript - 链接 jquery keydown 事件

javascript - 为什么数组显示为字符串,但当我将其打印到控制台时,它却将其打印为数组? ReactJS 功能组件

reactjs - 如何在单击时惯用地将文本组件转换为输入组件?

swift - 如何在 firebase 中保持用户连接?

python - 模块未找到错误: No module named 'firebase'

android - Firebase:将数据传递给 cloudfunction 导致:对象无法在 JSON 中编码

javascript - React - 如何映射嵌套对象值?

javascript - 2 个函数调用 onChange - ReactJS

javascript - 如何使用javascript替换所有 "?"