我正在编写我的第一个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的本机操作破坏?