无法读取未定义的属性(读取“类型”)。Redux
2022-05-21
2891
因此,我正在尝试在我的项目中设置 redux。并且在 Reducer 中出现了一个非常奇怪的问题:未捕获的 TypeError:无法读取未定义的属性(读取“type”)。 这是 Reducer.ts:
import { MarkerActionEnum, MarkerActions, MarkerState } from './types';
const initialState: MarkerState = {
data: undefined,
};
export function MarkerReducer(
action: MarkerActions,
state = initialState,
): MarkerState {
switch (action.type) {
case MarkerActionEnum.ADD_MARKER:
return {
...state,
data: action.payload,
};
case MarkerActionEnum.DELETE_MARKER: {
return { data: undefined };
}
default:
return state;
}
}
export default MarkerReducer;
以及 Reducer 的 types.ts:
import { Action } from 'redux';
import { MarkerType } from '../../pages/mapPage/components/CustomMap';
export interface MarkerState {
data: MarkerType | undefined;
}
export enum MarkerActionEnum {
ADD_MARKER = 'marker/ADD_MARKER',
DELETE_MARKER = 'marker/DELETE_MARKER',
}
export interface AddMarkerInterface
extends Action<MarkerActionEnum.ADD_MARKER> {
type: MarkerActionEnum.ADD_MARKER;
payload: { longitude: number; latitude: number };
}
export interface DeleteMarkerInterface
extends Action<MarkerActionEnum.DELETE_MARKER> {
type: MarkerActionEnum.DELETE_MARKER;
}
export type MarkerActions = AddMarkerInterface | DeleteMarkerInterface;
日志表明问题发生在 Reducer 的第 11 行,就在
switch (action.type)
中
有人知道或遇到过类似的事情吗?
2个回答
我遇到了同样的问题。问题在于参数的顺序。“State”应该是第一个,“action”应该是第二个。
abender
2022-08-18
我认为这意味着您已将非操作(即没有
type
属性)用作
dispatch
的参数。例如,如果您有一个操作构建器但忘记了括号,例如
dispatch(myActionBuilder)
而不是
dispatch(myActionBuilder())
。
JulienD
2022-05-21