Доступ к данным из моих аксиом дает ответ, который не работает

может кто-нибудь указать, где я иду не так? У меня есть простой запрос на получение API. это нормально получает данные из моего API

const GetMedicalPackages = async (props:IGetMedPack)=>{
    const token = props.token
   
    const data = axios({
        method:"get",
        responseType:"json",
        url : baseURL + "medicalPackage", 
        headers: { "Authorization": `Bearer ${token}`}
      })
      await data;
      return data.then((response:IMedicalPackageData| undefined)=>{
        return response
      })
 
} 

Это возвращает такие данные Данные из API

Теперь попытка получить доступ к данным с помощью этого кода возвращается с этим кодом, всегда возвращается и не определена

useEffect(() => {
    //async function fetchMyData() {
    GetMedicalPackages({ token }).then((response) => {
      if (response) {
        const options = response.data.map((row) => {
          console.info(row.MedicalInsurancePackage);
          return row.MedicalInsurancePackage;
          //console.info(row);
          //options.push(row.MedicalInsurancePackage);
        });
        //setMedPackage(options);
        console.info(options, response.data);
      }
    });

значения опций

Я подозреваю, что это связано с объектом, который возвращается в каждой строке, но я могу ошибаться. Может кто-нибудь указать, что не так, пожалуйста, спасибо

Я пробовал foreach и различные методы, но ничего. чтобы получить массив строк

Просто для ясности: проблема не в том, что вызов axios дает мне данные. Данные вижу нормально. Но попробовать использовать возвращенные данные — проблема. журнал консоли показывает мне данные. но как только я пытаюсь отобразить его, я получаю undefines. Пожалуйста, смотрите изображения строка журнала консоли дайте мне это

активный пакет: правда Медицинское страхованиеПакет: «Стандарт» medicalInsurancePackageDesc: "Стандарт S" Медицинское страхованиеPackageID: 1 [[Прототип]]:Объект

но консольный журнал row.medicalInsurancePackage дает мне неопределенный

Ваша функция GetMedicalPackages возвращает IMedicalPackageData yes? это объект, а не массив, поэтому вы можете использовать .map на нем. Также вы можете просто использовать const data = await axios(...); и удалить все после.

CoderApprentice 10.02.2023 12:34

это все еще дает мне ту же проблему. Я получаю данные, но не могу сделать карту на них

TheGrownDev 10.02.2023 12:55

Упс, извините, я имел в виду can't использовать карту на объекте. Ах, но ваш вызов axios действительно возвращает массив :) добавьте :IMedicalPackageData[] в качестве типа возвращаемого значения, чтобы было понятно (я вижу, вы уже решили проблему, просто дружеский совет).

CoderApprentice 10.02.2023 13:51
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
0
3
68
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы не должны await работать со своей переменной, но должны ждать результата своего axios вызова. А затем просто верните ответ, который вы получите от него.

const data = await axios(...)
return data;

Это все еще дает мне ту же проблему. Я получаю данные, но могу сделать на них карту, и она возвращает undefined

TheGrownDev 10.02.2023 12:56
Ответ принят как подходящий

Похоже, вы неправильно понимаете, как работают Promise. подумайте о том, чтобы сделать:

const GetMedicalPackages = async (props) => {
  const token = props.token;

  return await axios({
    method: "get",
    responseType: "json",
    url : baseURL + "medicalPackage",
    headers: { Authorization: `Bearer ${token}` },
  });
};

Выполнение этого таким образом все еще не решает проблему, из-за которой я не смог сопоставить данные. Я все еще получаю undefines на своей карте

TheGrownDev 10.02.2023 13:04

Это исправляет ваш фактический вопрос о Stackoverflow. Чтобы решить эту новую проблему, вы можете попробовать console.info(row), а не console.info(row.MedicalInsurancePackage)

devpolo 10.02.2023 13:08

Да, строка журнала консоли показывает данные. Но когда я пытаюсь исправить, это undefines, когда я пытаюсь сопоставить данные

TheGrownDev 10.02.2023 13:11

Можете ли вы показать мне структуру вашего row ответа?

devpolo 10.02.2023 13:13

строка журнала консоли дает мне этот activePackage: true, medicalInsurancePackage: "Standard", medicalInsurancePackageDesc: "S Standard", medicalInsurancePackageID:1, [[Prototype]]:Object, но строка журнала консоли.medicalInsurancePackage дает мне неопределенный

TheGrownDev 10.02.2023 13:17

хорошо. замените row.MedicalInsurancePackage на row.medicalInsurancePackage (строчная первая буква). Если это сработало. рассмотреть принять ответ.

devpolo 10.02.2023 13:19

Спасибо. изменил мой интерфейс на строчную первую букву, а затем заменил ее там, где она использовалась. это сработало. Почему возвращаемые данные не соответствовали интерфейсу

TheGrownDev 10.02.2023 13:27

Другие вопросы по теме