簡體   English   中英

無法讀取未定義的屬性(讀取“類型”)。 Redux

[英]Cannot read properties of undefined (reading 'type'). Redux

所以,我正在嘗試在我的項目中設置 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;

日志說問題發生在減速器的第 11 行,就在switch (action.type)有沒有人知道或偶然發現這樣的事情?

我想說這意味着您已將其用作參數來dispatch不是動作的東西,即沒有type屬性。 例如,如果您有一個動作構建器並且忘記了括號,例如在dispatch(myActionBuilder)而不是dispatch(myActionBuilder())中。

我遇到過同樣的問題。 問題是參數的順序。 “狀態”應該是第一位的,“行動”應該是第二位的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM