React Native: Почему разрушение объектов не работает внутри обычных функций? - PullRequest
0 голосов
/ 01 марта 2019

Использование деструктуризации объекта use для разрушения моего состояния перед отправкой вызова в мой REST API, и это работает только внутри функции стрелки для меня.Я пытался вызвать его внутри обычной функции, и я продолжал получать сообщение об ошибке, что оно не определено.Ниже приведены примеры кода

Я вызываю функцию в дочернем компоненте, я не уверен, что это имеет значение.Ваша помощь будет принята с благодарностью, поэтому я могу изучить эту концепцию, спасибо!

Код Я не понимаю, почему он нарушает

async get() {
 const { userData } = this.state
 try {
  const response = await http.get('/v1', {
    userData
  })
  console.log('response', response);
  await this.setState({friends: response.data});
 } catch(err) {
  console.log("error getting friends ", err);
 }
}

** Код, который работает**

get = async () => {
 const { userData } = this.state
 try {
  const response = await http.get('/v1', {
    userData
  })
  console.log('response', response);
  await this.setState({friends: response.data});
 } catch(err) {
  console.log("error getting friends ", err);
 }
}

1 Ответ

0 голосов
/ 01 марта 2019

Я думаю, ваш код не будет работать из-за ключевого слова this. Понимание этого ключевого слова в javascript

Чтобы оно работало.Вы можете привязать метод в конструкторе класса.Например.

class Example {

  constructor(){
    // ...
    this.get = this.get.bind(this); // Or bind the method that you call get method
  }

  async get() {
   const { userData } = this.state
   try {
    const response = await http.get('/v1', {
      userData
    })
    console.log('response', response);
    await this.setState({friends: response.data});
   } catch(err) {
    console.log("error getting friends ", err);
   }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...