#reactjs #react-native
#reactjs #react-native
Вопрос:
Я совсем новичок в React, и я пытаюсь получить ответ от weatherapi.com . Однако я не был очень успешным. Ниже приведен мой фрагмент кода:
const api_call = async () => {
const url = 'https://api.weatherapi.com/v1/current.json?key=' API_KEY 'amp;q=Singapore'
const request = axios.get(url)
const response = await request
console.log('url - ' url)
console.log('request - ' request)
console.log('response - ' response)
}
useEffect(() => {
api_call()
}, [])
журнал консоли, который был напечатан (мне пришлось отредактировать ключ API) :
url - https://api.weatherapi.com/v1/current.json?key=xxxxxxxxxxamp;q=Singapore
request - [object Promise]
response - [object Object]
Я перешел по следующей сгенерированной ссылке, и она действительно показывала нужные мне данные в браузере.
Моя версия axios — 0.21.1, если это поможет.
Теперь я хочу, чтобы ответ был напечатан в консоли, просто чтобы я мог убедиться, что я действительно получил ответ. Я что-то пропустил? Заранее спасибо.
Ответ №1:
const api_call = async () => {
try {
const url =
"https://api.weatherapi.com/v1/current.json?key="
API_KEY
"amp;q=United States";
const request = await axios.get(url);
console.log(request.data);
} catch (err) {
console.log(err.message, " ", err.code);
}
};
useEffect(() => {
api_call();
}, []);
вам нужно было получить доступ к объекту данных из запроса axios, вам не нужно было указывать ответ, как указано ниже
Ответ №2:
request
и response
являются объектами. Передача a string object
на консоль.журнал преобразует объект в строку. Итак, если вы хотите распечатать содержимое объекта, вы должны использовать console.log
следующее
console.log('response -', response)
Ответ №3:
Это был плохой вопрос. Произошло не то, что я не получил ответа, а то, что ответ не был строкой (это был JSON).
Я использовал JSON.stringify(), чтобы превратить его в строку.
Ответ №4:
Я думаю, что вы успешно получаете ответ, но проблема в том, как вы пишете его на консоли.
console.log('response -' response)
В приведенном выше console.log объект ответа будет преобразован в строку (поскольку вы пытаетесь объединить его со строкой), так что именно по этой причине вы видите, что [object object] на консоли.
Вместо этого используйте:
console.log('response -', response);
Это даст правильное значение ответа на консоли.(Включая URL, данные, статус и т. Д.)
Если вам просто нужны данные, используйте:
console.log('response -', response.data)