He estado buscando una solución para mi problema, en realidad parece bastante fácil pero no funciona :(. El problema es el siguiente: busco datos de mi backend que es localhost/users . Obtengo los datos y puede console.log ellos.Pero me parece imposible escribirlo en una variable y exportarlo.Aquí está mi código:
import axios from "axios"; function init() { let obj; axios('/users') .then(response => { obj = (response.data) console.log(obj) return obj }) .catch(error => { console.log("error fetching") return null }) } let obj = init() export default objSi intento consolar. registrar la variable exportada, simplemente escribe sin definir, supongo que se salta la sección de respuesta. La variable devuelta tampoco está definida
Solo necesita agregar la palabra clave de retorno antes de la función axios
import axios from "axios"; function init() { let obj; return axios('/users') .then(response => { obj = (response.data) console.log(obj) return obj }) .catch(error => { console.log("error fetching") return null }) } let obj = init() export default obj ```No puede devolver el valor de la función interna.
Para hacer eso, puede usar Promises o Callback o simplemente React setState si lo desea pero dentro del componente.
import axios from "axios"; function init() { return new Promise((resolve, reject) => { axios('/users') .then(response => { obj = (response.data) resolve(obj); }) .catch(error => { reject(error); }) }); } // To log or get the values init().then(obj => { console.log(obj); }).catch(error => console.log(error)); export default obj import axios from "axios"; function init(successCallback, errorCallback) { axios('/users') .then(response => { obj = (response.data) successCallback(obj); }) .catch(error => { errorCallback(error); }) } // To log or get the values init(obj => { console.log(obj); }, error => { console.log(error); }); export default obj