React Native: Почему разрушение объектов не работает внутри обычных функций?

Использование использования деструктуризации объекта для разрушения моего состояния перед отправкой вызова в мой 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 ответ

Я думаю, что ваш код не будет работать из-за 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);
   }
  }
}
Другие вопросы по тегам