codex
codex

Reputation: 87

fetch data error with react native

I used two classes I call the second class as below

let s = new SearchExtend();

output = s.fetchData(search)
alert(output)

The second function:

fetchData = (search) => {

      fetch('http://example.com/search.php' , {
        method: 'POST',
        headers: {
          'Accept': 'application/json',
          'Content-Type': 'application/json',
        },
        body: JSON.stringify({

          // Getting the search.
          search: search
        })
      }).then((response) => response.json())

       .then((responseJson) => {
             return responseJson;
       })
       .catch((error) => {
         console.error(error);
       });
}

But i get in "alert" undefined

When I use this.setState instead of return, I get the following error:

warning setstate(...) can only update a mounted or mounting component

Upvotes: 0

Views: 1520

Answers (1)

Harkirat Saluja
Harkirat Saluja

Reputation: 8114

You are getting undefined because you are using promises. Initially it returns undefined and once promise is resolved you get the actually data.

A better way to handle this would be to return the promise and resolve it externally as follows:-

const fetchApi = () => {
   return fetch("https://swapi.co/api/people" , {
    method: 'GET',
    headers: {
      'Accept': 'application/json',
      'Content-Type': 'application/json',
    }
  }).then((response) => {
    return response.json();
  })
   .then((responseJson) => {
    return responseJson;
  })
    .catch((error) => {
    console.error(JSON.stringify(error));
  });
}


fetchApi()
.then((data) => {
  console.log("data", data);
})

Upvotes: 1

Related Questions