我试图从组件调用减速器并希望在组件中渲染它,但是当我尝试将减速器存储在 redux 的 createStore() 方法中时,出现了上述错误。我的代码是这样的:-
import { applyMiddleware, compose, createStore } from 'redux'
import thunk from 'redux-thunk'
import { browserHistory } from 'react-router'
import makeRootReducer from './reducers'
import { updateLocation } from './location'
import allReducers from './reducers';
export default (initialState = {}) => {
// ======================================================
// Middleware Configuration
// ======================================================
const middleware = [thunk]
// ======================================================
// Store Enhancers
// ======================================================
const enhancers = []
let composeEnhancers = compose
if (__DEV__) {
const composeWithDevToolsExtension = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__
if (typeof composeWithDevToolsExtension === 'function') {
composeEnhancers = composeWithDevToolsExtension
}
}
// ======================================================
// Store Instantiation and HMR Setup
// ======================================================
const store = createStore(
allReducers,
makeRootReducer(),
initialState,
composeEnhancers(
applyMiddleware(...middleware),
...enhancers
)
)
我收到错误:未捕获的错误:预期增强器是
功能
您向 createStore 函数传递了两个减速器,而不是一个。
由于 createStore 的第三个参数始终是增强器函数,因此它认为 'initiaeState' 变量是增强器函数,因为您将其作为 createStore 的 thid 参数传递。
createStore 期望收到以下参数:
-
reducer (Function):返回下一个状态的归约函数
树,给定当前状态树和要处理的操作。
-
[preloadedState](任意):初始状态。您可以选择
指定它来混合通用应用程序中服务器的状态,
或恢复先前序列化的用户会话。如果你生产了
带有combineReducers的reducer,这必须是一个带有
与传递给它的密钥相同的形状。否则,您可以自由通过
你的减速器可以理解的任何东西。
-
[enhancer](功能):存储增强器。您可以选择
指定它来增强商店的第三方功能,例如
作为中间件、时间旅行、持久化等唯一的存储
Redux 附带的增强器是 applyMiddleware()。
请记住,应用程序中的根减速器应将所有减速器合并为一个减速器。
来自Redux 文档 http://redux.js.org/docs/recipes/reducers/BasicReducerStructure.html
首先也是最重要的,重要的是要了解您的整个
应用程序实际上只有一个减速器功能
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)