React Native - похоже, что fetch не срабатывает - PullRequest
0 голосов
/ 26 сентября 2019

Fetch, похоже, не запускается - это мой компонент в React Native:

import { Button } from 'react-native';

export function Test() {
  function submit() {
    console.log('submit');
    fetch('https://swapi.co/api/people/1/').then(
      res => {
        console.log('res', res);
        return res.json();
      },
      err => console.log('err', err)
    ).then(
      res => console.log('res', res)
    ).catch(
      err => console.log('catch', err)
    ).finally(
      res => console.log('finally', res)
    );
    console.log('after');
  }
  return (
    <Button
      title="Test"
      onPress={submit}
    />
  );
}

единственное, что я вижу в консоли:

submit
after

У меня естьпробовал также Axios, и результаты те же.

Эта проблема возникает как для Android, так и для IOS ...


РЕДАКТИРОВАТЬ

Только что попробовал использовать XMLHttpRequest API, и снова только submit logs:

function submit() {
  console.log('submit');
  var request = new XMLHttpRequest();
  request.onreadystatechange = (e) => {
    console.log('ready', e);
    if (request.readyState !== 4) {
      return;
    }
    if (request.status === 200) {
      console.log('success', request.responseText);
    } else {
      console.warn('error');
    }
  };
  request.open('GET', 'https://swapi.co/api/people/1/');
  request.send();
}

Ответы [ 2 ]

1 голос
/ 26 сентября 2019

Как насчет onPress={() => this.submit()}

0 голосов
/ 27 сентября 2019

оригинальный код

function submit() {
    console.log('submit');
    fetch('https://swapi.co/api/people/1/').then(
      res => {
        console.log('res', res);
        return res.json();
      },
      err => console.log('err', err)
    ).then(
      res => console.log('res', res)
    ).catch(
      err => console.log('catch', err)
    ).finally(
      res => console.log('finally', res)
    );
    console.log('after');
  }

Изменить следующим образом

async function submit() {
    console.log('submit');

    await fetch('https://swapi.co/api/people/1/')
        .then(res => res.json())
        .then(resJson => console.log('res ', resJson))
        .catch(err => console.log('catch ', err))
        .finally(() => console.log('finally'));

    console.log('after');
}

Таким образом, в консоли отображаются следующие результаты:

submit
res {name: "Luke Skywalker", height: "172", mass: "77", hair_color: "blond", skin_color: "fair", …}
finally
after
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...