【问题标题】:why i am getting undefine on action.js section为什么我在 action.js 部分得到 undefined
【发布时间】:2022-12-14 11:00:20
【问题描述】:

我正在尝试从服务中获得对 action.js 文件的响应,但每次我都未定义时,我已经调试了 service.js API 函数,它显示了它的响应,我在 action.js 文件中得到了未定义

动作.js

export const loginUser = () => async (
  dispatch: ThunkDispatch<IStore, null, ILogInUserAction>,
  getState: () => IStore
) => {
  dispatch({ type: LOGIN_USER_ACCOUNT.LOGIN_USER_LOADING });

  const logInUser = store.getState().auth.logInUser;

  const payload: ILogInUserRequestAction = {
    username: logInUser.username,
    password: logInUser.password,
  };
  const result = await login(payload);
  console.log('result', result);
};

实例.js

import axios from 'axios';

export const instance = axios.create({
  baseURL: process.env.REACT_APP_BACK_END_HOST,
  headers: { 'Content-Type': 'application/json' },
});

instance.interceptors.response.use(
  (response) => response.data,
  (error) => Promise.reject(error)
);

服务.js

export const login = (data: ReqLogin) => {
  instance
    .post('/auth/login/', data)
    .then((response) => ({
      status: true,
      response,
    }))
    .catch((response) => ({
      status: false,
      error: response?.data,
    }));
};

结果控制台.log

回复截图

【问题讨论】:

  • return instance.post... 你错过了return。或者去掉周围的{}

标签: javascript reactjs api redux


【解决方案1】:

您没有在 login() 函数中返回任何内容。您必须添加返回语句:

export const login = (data: ReqLogin) => {
   return instance
    .post('/auth/login/', data)
    .then((response) => ({
      status: true,
      response,
    }))
    .catch((response) => ({
      status: false,
      error: response?.data,
    }));
};

【讨论】:

  • 或者因为您使用的是箭头函数,您可以省略 instance promise 周围的大括号 ({})。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-23
  • 2019-08-13
  • 2014-11-08
  • 2018-01-14
  • 2020-05-10
相关资源
最近更新 更多