未捕获的TypeError:无法读取属性'键入'未定义的React / Redux

时间:2016-12-10 04:53:02

标签: javascript reactjs redux render-to-string

我只是在学习redux / reactjs.And我正在尝试使用redux进行服务器端渲染但不幸的是我收到了这个错误。是有很多答案,但不适合我。 enter image description here

headerReducer.js

import * as type from '../Actions/actionTypes';


const initialState = {
    menuToggle:false,
    singnInToggle:false,
    removeUploadMenu:true,
    uploadPopUp:false
};
export default function toogleReducer(state=initialState,action) {
  switch (action.type){
      case type.NAVBAR_TOGGLE:
          return(
              Object.assign({},state,{menuToggle:action.payload})
          );
      case type.SIGNINPOP_TOGGLE:
          return(
              Object.assign({},state,{singnInToggle:action.payload})
          );
      case type.REMOVEUPLOADMENU:
          return(
              Object.assign({},state,{removeUploadMenu:action.payload})
          );
      case type.TOGGLEUPLOADPOPUP:
          return(
              Object.assign({},state,{uploadPopUp:action.payload})
          );
      case type.TOGGLEUPLOADPOPUPOFF:
          return(
              Object.assign({},state,{uploadPopUp:action.payload})
          )
      default:
          return state
  }
}

headerActions.js

import * as types from './actionTypes';

export function toggleStatus(bool) {
    return{
        type:types.NAVBAR_TOGGLE,
        payload:bool
    }
}
export function toggleSignPop(bool) {
    return{
        type:types.SIGNINPOP_TOGGLE,
        payload:bool
    }
}

export function removeUploadMenu(bool) {
    return{
        type:types.REMOVEUPLOADMENU,
        payload:bool
    }
}

export function toggleUploadPopun(bool) {
    return{
        type:types.TOGGLEUPLOADPOPUP,
        payload:bool
    }
}

减速器/ index.js

import {combineReducers} from 'redux';
import toggleReducer from './headerReducer';
import loginStatusReducer from './AuthReducer';
import photoUploadReducer from './photoUploadingReducer';
import notificationReducer from './NotificationReducer';
import supportForUploadReducer from './supportForUploadReducer';

export default combineReducers({
  toggle:toggleReducer,
    logInStatus:loginStatusReducer,
  photoUpload:photoUploadReducer,
  notification:notificationReducer,
  loadedAjax:supportForUploadReducer
});

1 个答案:

答案 0 :(得分:3)

我怀疑您的组件未正确连接到Redux商店。看看this Dan Abramov's example。将操作连接到Redux存储时,尤其应该使用dispatch。例如:

const mapDispatchToProps = (dispatch) => {
  return {
    onTodoClick: (id) => {
      dispatch(toggleTodo(id));
    },
  };
};