React-шаблон, редуктор отправляет мне объект вместо моего defaultState по умолчанию? - PullRequest
0 голосов
/ 28 ноября 2018

Я не получаю свой initialState во время ожидания ajax-запросов?Вот снимок как фактических данных, так и начального состояния редуктора.

this.props моего приложения

вот мой код редуктора:

/*
 *
 * MainPage reducer
 *
 */
import { fromJS } from 'immutable';
import { LOAD_BANNERS, LOAD_BANNERS_SUCCESS, LOAD_BANNERS_ERROR, LOAD_CAROUSELS, LOAD_CAROUSELS_SUCCESS, LOAD_CAROUSELS_ERROR, LOAD_SIDEBAR, LOAD_SIDEBAR_SUCCESS, LOAD_SIDEBAR_ERROR } from './constants';

export const initialState = fromJS({
  bannerItems: [],
  carouselItems: [],
  sidebarItems: [],
  loadingBanners: false,
  errorBanners: true,
  loadingCarousels: false,
  errorCarousels: true,
  loadingSidebar: false,
  errorSidebar: true
});

function mainPageReducer(state = initialState, action) {
  switch (action.type) {
    case LOAD_BANNERS:
      return state.set('loadingBanners', true).set('errorBanners', false);
    case LOAD_BANNERS_SUCCESS:
      return state.set('loadingBanners', false).set('errorBanners', false).set('bannerItems', action.bannerItems);
    case LOAD_BANNERS_ERROR:
      return state.set('loadingBanners', false).set('errorBanners', action.error);
    case LOAD_CAROUSELS:
      return state.set('loadingCarousels', true).set('errorCarousels', false);
    case LOAD_CAROUSELS_SUCCESS:
      return state.set('loadingCarousels', false).set('errorCarousels', false).set('carouselItems', action.carouselItems);
    case LOAD_CAROUSELS_ERROR:
      return state.set('loadingCarousels', false).set('errorCarousels', action.error);
    case LOAD_SIDEBAR:
      return state.set('loadingSidebars', true).set('errorSidebar', false);
    case LOAD_SIDEBAR_SUCCESS:
      return state.set('loadingSidebars', false).set('errorSidebar', false).set('sidebarItems', action.sidebarItems);
    case LOAD_SIDEBAR_ERROR:
      return state.set('loadingSidebars', false).set('errorSidebar', action.error);
    default:
      return state;
  }
}

export default mainPageReducer;

Почему редуктор отправляет мне объект (список) вместо моего начального состояния.Вот код моего app.js, где я привязал свои dataTypes:

MainPage.propTypes = {
  // dispatch: PropTypes.func.isRequired,
  bannerItems: PropTypes.array,
  bannerItemsLoading: PropTypes.bool,
  carouselItems: PropTypes.array,
  carouselItemsLoading: PropTypes.bool,
  sidebarItems: PropTypes.array,
  sidebarItemsLoading: PropTypes.bool,
  loadBanners: PropTypes.func,
  loadCarousels: PropTypes.func,
  loadSidebars: PropTypes.func
};

1 Ответ

0 голосов
/ 28 ноября 2018

Он отправляет вам неизменяемый объект js, попробуйте сделать .toJS() для ваших List элементов, вы получите простой объект JavaScript (однако не рекомендуется преобразовывать туда и обратно между immutablejs и простым объектом js)., так как это удар по производительности)

...