我只是在学习redux / reactjs.And我正在尝试使用redux进行服务器端渲染但不幸的是我收到了这个错误。是有很多答案,但不适合我。
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
});
答案 0 :(得分:3)
我怀疑您的组件未正确连接到Redux商店。看看this Dan Abramov's example。将操作连接到Redux存储时,尤其应该使用dispatch
。例如:
const mapDispatchToProps = (dispatch) => {
return {
onTodoClick: (id) => {
dispatch(toggleTodo(id));
},
};
};