【问题标题】:Unhandled Rejection (Error): Actions may not have an undefined "type" property. Have you misspelled a constant?未处理的拒绝(错误):操作可能没有未定义的“类型”属性。你有没有拼错一个常数?
【发布时间】:2019-02-01 20:23:19
【问题描述】:

试图在 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
  })
);
}; 

编辑:MaeonBrix 帮助我意识到我的“GET_TRACKS”导入在我的操作类型所在的文件中丢失:

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

文件类型.js:

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

【问题讨论】:

    标签: react-redux


    【解决方案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

    【讨论】:

    • 感谢@MaieonBrix,我意识到即使我确实有 import 语句,但我的“类型”文件中缺少该操作。
    • 实际上,当我从 types.js 添加导出时,错误并没有消失......嗯
    • 去掉变量名周围的大括号
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-23
    相关资源
    最近更新 更多