Tengo esta función en React que debería exportar el resultado obtenido de una llamada a la API de Axios:
import axios from 'axios' export function youtube(channelId) { var config = { method: 'get', url: `https://www.googleapis.com/youtube/v3/channels?part=statistics&id=${channelId}&key=AIzaxXXXXXXXXXXXXXXXXXXXXXX`, headers: { } }; axios(config) .then(function (response) { console.log(response.data.items[0].statistics.subscriberCount) return response.data.items[0].statistics.subscriberCount }) .catch(function (error) { return 0 }); }Problema: devuelve indefinido. Pero el archivo console.log muestra los datos correctos.
De forma Synchronous eso no es posible, pero sí de forma asynchronous , es posible. Según nuestra discusión de comentarios, está accediendo a la promise y para tareas asynchronous , debe resolve para return cualquier valor o usar async/await para mejorar propósitos de lectura.
En su código, el problema es que está returning a then/catch , otro then/catch estará esperando su entrada, no tendrá éxito hasta que no settled la promesa.
Codesandbox: https://codesandbox.io/s/divine-cherry-dqu40?file=/src/App.js