【发布时间】:2022-08-18 20:42:46
【问题描述】:
所以,我正在尝试在我的项目中设置 redux。在 reducer 中出现了一个非常奇怪的问题:Uncaught TypeError: Cannot read properties of undefined (reading \'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;
和 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)
有没有人知道或偶然发现这样的事情?
-
附带说明:看起来您可能正在为 Redux+React-Redux 使用一些遗留样式的模式。带有 Redux Toolkit 和 React-Redux 钩子 API 的“现代 Redux” 应该有助于简化代码并更易于使用,尤其如果您使用的是 TS。 (例如,整个单独的“reducer types”文件将完全消失!)有关详细信息,请参阅我们的 Redux 文档教程:redux-toolkit.js.org/tutorials/overview 和 redux.js.org/usage/…。
标签: reactjs typescript redux react-redux