React-Redux,为什么在reducer中action为null

时间:2018-03-12 02:32:22

标签: reactjs react-redux

假设:

//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中动作为空?

1 个答案:

答案 0 :(得分:2)

正如jmargolisvt所说,你在代码中错过了()。 请将行const sceneReaderReducers = (state = initialState, action => {更改为const sceneReaderReducers = ((state = initialState, action) => {,然后重试。