Как использовать ключевое слово "this" внутри результата вызова API fetch - PullRequest
0 голосов
/ 25 мая 2018

Я использую следующий API извлечения для получения результата API.Мне нужно установить данные результата в состоянии, но объект "this" недоступен внутри функции обратного вызова.Как я могу обновить код, чтобы установить значение в состоянии, используя ключевое слово this?

fetch(config.apiUrl + '/api/user', {
  headers: authHeader(),
  method: 'GET',
})
  .then(function(res) {
    return res.json();
  })
  .then(function(data) {
    this.setState({ id: data.id });
  });

Ответы [ 2 ]

0 голосов
/ 25 мая 2018

Вы можете использовать функции стрелок

fetch(config.apiUrl + '/api/user', {
  headers: authHeader(),
  method: 'GET',
})
  .then(res => {
    return res.json();
  })
  .then(data => {
    this.setState({ id: data.id });
  });

или вы можете присвоить ключевое слово this переменной и использовать ее как var that = this;

fetch(config.apiUrl + '/api/user', {
  headers: authHeader(),
  method: 'GET',
})
  .then(function(res) {
    return res.json();
  })
  .then(function(data) {
    that.setState({ id: data.id });
  });
0 голосов
/ 25 мая 2018
  • Назначьте ключевое слово this переменной, которая находится за пределами обратного вызова, где она все еще доступна.Часто используется var self = this;.
  • Используйте 'self' в обратном вызове, где это необходимо.
...