reducer.js 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import {fromJS} from 'immutable';
  2. import * as constants from './constants';
  3. const defaultState = fromJS({
  4. featureList: [],
  5. blogList: [],
  6. articlePage: 1,
  7. finished: false,
  8. loading: true,
  9. isList: false
  10. });
  11. const setFeature = (state, action) => {
  12. return state.merge({
  13. featureList: action.data
  14. })
  15. };
  16. const setBlogList = (state, action) => {
  17. return action.override ? state.merge({
  18. blogList: action.override ? fromJS(action.data) : state.get('blogList').concat(fromJS(action.data)),
  19. articlePage: action.nextPage,
  20. finished: false,
  21. loading: false,
  22. isList: true
  23. }) : state.merge({
  24. blogList: action.override ? fromJS(action.data) : state.get('blogList').concat(fromJS(action.data)),
  25. articlePage: action.nextPage,
  26. loading: false,
  27. isList: true
  28. })
  29. };
  30. export default (state = defaultState, action) => {
  31. switch (action.type) {
  32. case constants.GET_FEATURE:
  33. return setFeature(state, action);
  34. case constants.GET_BLOGLIST:
  35. return setBlogList(state, action);
  36. case constants.SET_FINISHED:
  37. return state.set('finished', true);
  38. case constants.LOADING_TRUE:
  39. return state.set('loading', true);
  40. default:
  41. return state;
  42. }
  43. }