未处理的拒绝(错误):动作可能没有未定义的“类型”属性。你拼错了常量吗?

时间:2019-02-01 20:23:20

标签: react-redux

试图在Redux中创建一个动作来调用我的API。我知道操作必须具有定义的类型,所以不确定为什么我会收到此错误

试图寻找类似的帖子,但没有一个提供我需要的答案

export const getTracks = () => dispatch => {
  axios
    .get("/api/tracks/all")
    .then(res =>
      dispatch({
       type: GET_TRACKS,
       payload: res.data
  })
)
   .catch(err =>
     dispatch({
      type: GET_TRACKS,
      payload: null
  })
);
}; 

编辑:MaieonBrix帮助我意识到,我的“GET_TRACKS”的进口是从那里我的动作类型所在的文件丢失:

import { GET_ERRORS, GET_TRACKS } from "./types";

文件types.js:

export const {GET_ERRORS} = 'GET_ERRORS';
export const {GET_TRACKS} = 'GET_TRACKS';

1 个答案:

答案 0 :(得分:1)

当您分派undefined类型的操作时,会发生此错误:

dispatch({ type: variableThatMightBeUndefined })

这意味着保存您的“ GET_TRACKS”字符串的GET_TRACKS变量未定义。

如果您更新帖子的操作方式(可能与此相关),我会更新我的答案

更新:

这里的问题是如何导出类型

// change this
export const { GET_TRACKS } = ...

// into this

export const GET_TRACKS = ...

以下是有关命名导出的文档:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/export