Почему функции стрелок можно использовать в классах ReactJS, а не в чистом классе ES6? - PullRequest
0 голосов
/ 05 мая 2019

Мне было интересно узнать, могу ли я написать чистый класс ES6, используя функции стрелок.Вот мой пример класса:

class PhoneNumber {
    constructor(phoneNumber) {
        this.phoneNumber = phoneNumber;
    }

    testEmpty() {
        if (!this.phoneNumber) return true;
        return false;
    }
}

Не похоже, что я могу написать это как:

class PhoneNumber {
    constructor = phoneNumber => {
        this.phoneNumber = phoneNumber;
    }

    testEmpty = () => {
        if (!this.phoneNumber) return true;
        return false;
    }
}

Хотя я могу написать что-то похожее на React:

   class PhoneNumber extends React.Component {
         state = {
              phoneNumber: this.props.phoneNumber;
         }

         testEmpty = () {
             if (!this.state.phoneNumber) return true;
             return false;
         }
     }

Почему компонент React, даже будучи классом, принимает функцию стрелки ES6, а мой чистый класс - нет?

1 Ответ

2 голосов
/ 05 мая 2019

Конструктор вообще не может быть функцией стрелки.Вы можете создавать методы стрелок в реагировать, потому что реакция использует предложения для полей класса под капотом.Вы можете добавить их в свой проект с помощью плагинов Babel ПредложениеПреимущество использования методов класса стрелки состоит в том, что значение this в таком методе будет ссылаться на сам класс внутри обратного вызова.Таким образом, вы можете использовать методы стрелок внутри слушателя событий без функции-оболочки или без bind ().

...