Как использовать функцию стрелки в es6 вместо метода связывания - PullRequest
0 голосов
/ 01 октября 2018

Ранее я использовал это для вызова моего метода в компоненте React JSX, этот метод дает мне правильный вывод

this.updateState.bind(this)

Но когда я заменяю приведенное выше выражение на

() => this.updateState(...this)

Это нене выдает вывод, он возвращает undefined

Ответы [ 3 ]

0 голосов
/ 01 октября 2018

В React вы можете связать функцию с this в конструкторе.this не определено в вашем случае, так как функция не привязана к нему.

constructor(props) {
  super(props)
  this.updateState = this.updateState.bind(this)
}

Тогда вы можете использовать функцию как обычно.Вы не хотите связывать функцию с this каждый раз, когда используете ее в любом случае.

И если у вас есть плагин свойств класса преобразования для Babel, вы можете автоматически связать функцию класса, определив ее как

updateState = () => {
  ...
}
0 голосов
/ 01 октября 2018

Свойства класса преобразования

updateState = () => {
  ...
}

Посмотрите на это: https://babeljs.io/docs/en/babel-plugin-transform-class-properties

0 голосов
/ 01 октября 2018

Вам следует заменить

 () => this.updateState(...this)

на

 (...args) => this.updateState(...args)

Функция стрелки наследует их контекст от родительской лексической области.
При вызове функции из функции стрелки она наследуетиз "этой" ссылки звонящего.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...