减速机接收所有动作类型?

时间:2017-06-15 14:53:41

标签: javascript reactjs typescript redux

我正在编写我的第一个Redux应用程序。我正在基于this boilerplate set的快速入门应用中创建新页面。我的问题是,样板应用程序actionType只有type属性而没有其他内容,而我的操作也需要payload。当Redux应用程序初始化或更改路由时,将触发操作@@router/LOCATION_CHANGE,其中包含有效负载,该负载包含要更改的位置。这被解释为具有我的有效载荷类型的动作,当它显然不是时。当应用程序尝试读取路由器有效负载的filename属性时,应用程序崩溃,该属性在那里不存在,但存在于我的类型中。

我的类型如下:

export type photoType = {
  filename: string,
  selected?: boolean
};

type actionType = {
  type: string,
  payload?: photoType
};

我的减速机看起来像这样:

export default function photoContainer(state: Array<photoType> = [], action: actionType) {
  const idx = state.indexOf(action.payload);
  switch (action.type) {
    case ADD_PHOTO:
      return [action.payload, ...state];
    case REMOVE_PHOTO:
      if (idx > -1) {
        return [
          ...state.slice(0, idx),
          ...state.slice(idx + 1)
        ];
      }
      return state;
    default:
      return state;
  }
}

我认为Typescript应该可以区分我的动作形状和其他动作?如何构建我的reducer以使它不会被Redux的本机操作破坏?

0 个答案:

没有答案