假设:
//Reducers/ScriptReaderReducers.js
let initialState = {};
const sceneReaderReducers = (state = initialState, action => { //eslint-disable-line
switch (action.type) {
case ScriptActions.MOVE_NEXT: {
return {
...state, //eslint-disable-line
currentIndex: action.currentIndex
};
}
我已将此映射到似乎正在运行的应用中:
import { createHashHistory } from 'history';
import { applyMiddleware, combineReducers, createStore} from 'redux';
import { connectRouter, routerMiddleware } from 'connected-react-router';
import createSagaMiddleware from 'redux-saga';
import SceneReducer from './Logic/Reducers/ScriptReaderReducers.js';
import ScriptSagas from './Logic/Sagas/ScriptSagas';
const sagaMiddleware = createSagaMiddleware();
// Start history
const history = createHashHistory({});
//Merge Reducers
let rootReducer = combineReducers({
SceneReducer
});
// Merge middlewares
let middlewares = [
routerMiddleware(history),
sagaMiddleware
];
// Development adds logging, must be last
if ( process.env.NODE_ENV !== 'production') {
middlewares.push( require('redux-logger')({
// Change this configuration to your liking
duration: true, collapsed: true
}) );
}
// Generate store
const store = createStore(connectRouter(history)(rootReducer),
{},
applyMiddleware(...middlewares)
);
console.error(store); //eslint-disable-line
sagaMiddleware.run(ScriptSagas);
// Export all the separate modules
export {
history,
store
};
在dev中启动此应用程序时,我收到一条错误消息:ScriptReaderReducers.js:9 Uncaught TypeError:无法读取属性'键入'未定义的。这似乎是开启行动的第一次测试。
我已经证明我的行动正在被调度,但我似乎无法获得一个调用堆栈来确定此错误的确切时间。
为什么在Reducers中动作为空?
答案 0 :(得分:2)
正如jmargolisvt所说,你在代码中错过了()
。
请将行const sceneReaderReducers = (state = initialState, action => {
更改为const sceneReaderReducers = ((state = initialState, action) => {
,然后重试。