2

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

文件类型.js:

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

1 回答 1

3

当您调度具有如下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

于 2019-02-01T20:27:54.357 回答