首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TypeError:中间件不是的函数错误-- v3迁移指南

TypeError:中间件不是的函数错误-- v3迁移指南
EN

Stack Overflow用户
提问于 2019-11-29 04:39:36
回答 1查看 206关注 0票数 0

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

也仰慕这份指南

图像显示误差

代码语言:javascript
复制
"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

代码语言:javascript
复制
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

代码语言:javascript
复制
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

代码语言:javascript
复制
import { combineReducers } from "redux"
import { firestoreReducer } from 'redux-firestore';
import { firebaseReducer } from 'react-redux-firebase'

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

溶液

代码语言:javascript
复制
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')
);
EN

回答 1

Stack Overflow用户

发布于 2019-11-29 07:44:50

不能将中间件数组作为参数传递给applyMiddleware。应该将每个中间件作为单独的参数传递,尝试如下:

代码语言:javascript
复制
export default () => {
    return createStore(
        rootReducer,
        initialState,
        applyMiddleware(thunk.withExtraArgument(getFirebase))
    )
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59098857

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档