Devolver valor de una función en reaccionar

Sep 17 2020

Cuando intento devolver mi res.data de mi función y luego console.log, obtengo un valor indefinido, pero si consuelo.log desde dentro de la función obtengo el resultado normal

const getDefaultState = () => {
  axios
    .get("http://localhost:5000/urls/todos")
    .then((res) => {
      if (res.data) {
        console.log(res.data);
        return res.data;
      }
    })
    .catch((err) => console.log(err));
};


console.log(getDefaultState());

entonces yo consigo primero

(3) [{…}, {…}, {…}]

(el valor normal) pero luego de afuera obtengo

indefinido

Respuestas

1 Jai Sep 17 2020 at 12:45

También debe devolver la llamada:

const getDefaultState = () => {
  return axios.get("http://localhost:5000/urls/todos")
        .then((res) => {
           if (res.data) {
              console.log(res.data);
              return res.data;
           }
  }).catch((err) => console.log(err));
}
eloyra Sep 17 2020 at 12:42

Deberías devolver la promesa en su lugar.

const getDefaultState = () =>
  axios
    .get("http://localhost:5000/urls/todos")
    .then((res) => {
      if (res.data) {
        console.log(res.data);
        return res.data;
      }
    })
    .catch((err) => console.log(err));

De esa forma puede escuchar el resultado fuera de la función:

getDefaultState().then(/* do stuff */);
// or
const res = await getDefaultState();