商店没有有效的减速机。反应还原

时间:2017-07-25 11:09:43

标签: reactjs redux react-redux

我遇到上述问题,我尝试了this,但没有运气。

这是我的商店:

import { compose, combineReducers, applyMiddleware, createStore } from "redux";
import thunkMiddleware from "redux-thunk";
import * as activities from "../reducers/activities";
import * as location from "../reducers/location";

const configureStore = railsProps => {
  const composedStore = compose(
    applyMiddleware(thunkMiddleware),
    window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__()
  );

  const combinedReducers = combineReducers({
    location,
    activities
  });
  return composedStore(createStore)(combinedReducers, railsProps);
};

export default configureStore;

这里是我的位置缩减器:

import { combineReducers } from "redux";
import * as actions from "../constants/constants";

const coordinates = (state = {}, action) => {
  switch (action.type) {
    case actions.GET_LOCATION_SUCCESS:
    case actions.GET_LOCATION_REQUEST:
    case actions.GET_LOCATION_FAILURE:
    default:
      return state;
  }
};

const reducer = coordinates;

export default reducer;

这是我的活动减速器:

import { combineReducers } from "redux";
import * as actions from "../constants/constants";

const page = (state = 0, action) => {
  switch (action.type) {
    case actions.NEXT_ACTIVITY_PAGE:
      return action.page < action.totalPages - 1
        ? action.page + 1
        : action.page;
    case actions.PREV_ACTIVITY_PAGE:
      return action.page > 0 ? action.page - 1 : 0;
    default:
      return state;
  }
};

const activities = (state = {}, action) => {
  switch (action.type) {
    case actions.FETCH_ACTIVITIES_SUCCESS: {
      return state.concat(action.activities);
    }
    case actions.FETCH_ACTIVITIES_REQUEST:

    case actions.FETCH_ACTIVITIES_FAILURE:

    default:
      return state;
  }
};

const reducer = combineReducers({ page, activities });

export default reducer;

我想这与combineReducers方法以及我如何导入内容有关,但我不确定那里有什么问题。

由于

1 个答案:

答案 0 :(得分:1)

这是错误的:

import * as activities from "../reducers/activities";
import * as location from "../reducers/location";
上面的

将导出文件中的所有命名导出,而缩减器是默认导出。

<强>正确的:

import activities from "../reducers/activities";
import location from "../reducers/location";

编辑:

如果要从文件中导出reducer,请将它们命名为:

export const page = (state = 0, action) => {
  switch (action.type) {
    ...
  }
};

export const activities = (state = {}, action) => {
  switch (action.type) {
    ...
  }
};

以后:

import { page, activities } from 'path/to/file.js';