2017-10-22 149 views
3

我想在我的respondjs应用程序中应用redux。我无法继续,因为这些错误的:TypeError:中间件不是函数

enter image description here

enter image description here

我敢肯定,我已经安装了我需要的所有依存关系。这是我的package.json

"dependencies": { 
    "react-redux": "^5.0.6", 
    "redux": "^3.7.2", 
    "redux-logger": "^3.0.6", 
    "redux-promise": "^0.5.3", 
    "redux-thunk": "^2.2.0", 
} 

这里的主要部分是我index.js的一部分,实现终极版

import { createStore, applyMiddleware } from 'redux'; 
import { Provider } from 'react-redux'; 
import thunkMiddleware from 'redux-thunk'; 
import createLogger from 'redux-logger'; 
import reducers from './reducers'; 

const logger = createLogger(); 
const store = createStore(reducers, 
    applyMiddleware(
     thunkMiddleware, logger 
    ) 
) 

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

回答

6

redux-logger

docs你混合起来使用

您需要导入特定的createLogger功能

import { createLogger } from 'redux-logger' 

const logger = createLogger({ 
    // ...options 
}); 

或使用默认进口

import logger from 'redux-logger' 

然后你的代码应该罚款

const store = createStore(
    reducers, 
    applyMiddleware(thunkMiddleware, logger) 
) 
+0

感谢您的回答!使用默认导入并将它传递给applyMiddleware适用于我。另外,感谢您参考文档。 –

1

我没有看到反应,并在你的依赖反应-DOM,它是不包括在进口声明。

让我为您提供一个最近我如何创建应用程序的例子,同时使用了令人惊叹的redux开发人员工具。

import React from 'react'; 
import ReactDOM from 'react-dom'; 
import { Provider } from 'react-redux'; 
import { createStore, combineReducers, applyMiddleware, compose } from 'redux'; 
import reduxThunk from 'redux-thunk'; 
import App from './components/App'; 
import authReducer from '../reducers/auth'; 
import urlsReducer from '../reducers/urls'; 

const composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose; 

//Store creation 
    const store = createStore(
    combineReducers({ 
     auth: authReducer, 
     urls: urlsReducer 
    }), 
    composeEnhancers(applyMiddleware(reduxThunk)) 
); 

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

我想你只需要在reduxThunk后添加记录器。如果您已经组合了减速器,那么只需提供减速器而不是组合减速器。

Regards, Rafael

相关问题