Javascript 是否接收所有动作类型?
我正在编写我的第一个Redux应用程序。我正在基于的quickstarter应用程序中创建一个新页面。我的问题是样板应用程序的Javascript 是否接收所有动作类型?,javascript,reactjs,typescript,redux,Javascript,Reactjs,Typescript,Redux,我正在编写我的第一个Redux应用程序。我正在基于的quickstarter应用程序中创建一个新页面。我的问题是样板应用程序的actionType只有type属性,而我的操作也需要负载。当Redux应用程序初始化或更改路由时,将触发操作@@router/LOCATION\u CHANGE,该操作的有效负载由它要更改的位置组成。这将被解释为一个带有我的负载类型的操作,而它显然不是。当应用程序试图读取路由器负载的filename属性时崩溃,该属性不存在,但存在于我的类型中 我的类型如下: expor
actionType
只有type
属性,而我的操作也需要负载。当Redux应用程序初始化或更改路由时,将触发操作@@router/LOCATION\u 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;
}
}
我的减速机是这样的:
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;
}
}
导出默认函数photoContainer(状态:数组=[],操作:actionType){
const idx=state.indexOf(action.payload);
开关(动作类型){
案件补充照片:
返回[action.payload,…state];
案件移开(照片):
如果(idx>-1){
返回[
…state.slice(0,idx),
…state.slice(idx+1)
];
}
返回状态;
违约:
返回状态;
}
}
我以为Typescript应该能够区分我的动作和其他动作的形状?如何构造reducer,使其不会被Redux的本机操作破坏?您使用的是自定义中间件还是其他什么?我不太清楚你的方法到底发生了什么。我们能看看你实际在哪里调度操作的代码吗?另外,使用union
类型定义您的操作可能会很有帮助,该类型可能类似于type PhotoAction={type:'ADD_PHOTO',PHOTO:PhotoType}{type:'REMOVE_PHOTO'}}{代码>