может кто-нибудь указать, где я иду не так? У меня есть простой запрос на получение 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 дает мне неопределенный
это все еще дает мне ту же проблему. Я получаю данные, но не могу сделать карту на них
Упс, извините, я имел в виду can't использовать карту на объекте. Ах, но ваш вызов axios действительно возвращает массив :) добавьте :IMedicalPackageData[] в качестве типа возвращаемого значения, чтобы было понятно (я вижу, вы уже решили проблему, просто дружеский совет).





Вы не должны await работать со своей переменной, но должны ждать результата своего axios вызова. А затем просто верните ответ, который вы получите от него.
const data = await axios(...)
return data;
Это все еще дает мне ту же проблему. Я получаю данные, но могу сделать на них карту, и она возвращает undefined
Похоже, вы неправильно понимаете, как работают Promise. подумайте о том, чтобы сделать:
const GetMedicalPackages = async (props) => {
const token = props.token;
return await axios({
method: "get",
responseType: "json",
url : baseURL + "medicalPackage",
headers: { Authorization: `Bearer ${token}` },
});
};
Выполнение этого таким образом все еще не решает проблему, из-за которой я не смог сопоставить данные. Я все еще получаю undefines на своей карте
Это исправляет ваш фактический вопрос о Stackoverflow. Чтобы решить эту новую проблему, вы можете попробовать console.info(row), а не console.info(row.MedicalInsurancePackage)
Да, строка журнала консоли показывает данные. Но когда я пытаюсь исправить, это undefines, когда я пытаюсь сопоставить данные
Можете ли вы показать мне структуру вашего row ответа?
строка журнала консоли дает мне этот activePackage: true, medicalInsurancePackage: "Standard", medicalInsurancePackageDesc: "S Standard", medicalInsurancePackageID:1, [[Prototype]]:Object, но строка журнала консоли.medicalInsurancePackage дает мне неопределенный
хорошо. замените row.MedicalInsurancePackage на row.medicalInsurancePackage (строчная первая буква). Если это сработало. рассмотреть принять ответ.
Спасибо. изменил мой интерфейс на строчную первую букву, а затем заменил ее там, где она использовалась. это сработало. Почему возвращаемые данные не соответствовали интерфейсу
Ваша функция
GetMedicalPackagesвозвращаетIMedicalPackageDatayes? это объект, а не массив, поэтому вы можете использовать.mapна нем. Также вы можете просто использоватьconst data = await axios(...);и удалить все после.