TypeError:中间件不是函数
问题描述:
我想在我的respondjs应用程序中应用redux。我无法继续,因为这些错误的:TypeError:中间件不是函数
我敢肯定,我已经安装了我需要的所有依存关系。这是我的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')
);
答
据redux-logger
您需要导入特定的createLogger
功能
import { createLogger } from 'redux-logger'
const logger = createLogger({
// ...options
});
或使用默认进口
import logger from 'redux-logger'
然后你的代码应该罚款
const store = createStore(
reducers,
applyMiddleware(thunkMiddleware, logger)
)
答
我没有看到反应,并在你的依赖反应-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
感谢您的回答!使用默认导入并将它传递给applyMiddleware适用于我。另外,感谢您参考文档。 –