@75db77

Можно ли в React писать функции таким образом?

Вот есть такая фунция в коде:
handleClick = () => {
    this.setState(state => ({ isActive: !state.isActive }));
 };

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

Вот так он перевел эту функцию в обычную:

handleClick = function handleClick() {
   this.setState(function (state) {
    return {
      isActive: !state.isActive
    };
  });
};


Правильно перевел Babel?

Хотя по идее мне кажется должен был перевести как-то так:

handleClick = function() {
   this.setState(function (state) {
    return {
      isActive: !state.isActive
    };
  });
};


И другой вопрос:
Можно ли по правилам React писать так функции? Тоесть чтобы было слово function и return?
  • Вопрос задан
  • 201 просмотр
Решения вопроса 1
RomReed
@RomReed
JavaScript, Flutter, ReactNative, Redux, Firebase
Вам никто не запрещает писать функции словом function и return. Но вы должны понимать что когда вы пишите стрелочные функции у вас нет проблемы с потерей контекста, а когда вы пишите функции так
handleClick = function() {
   this.setState(function (state) {
    return {
      isActive: !state.isActive
    };
  });
};

то вы должны привязать контекст либо с помощью .bind либо в конструкторе такthis.handleClick=this.handleClick.bind()
Согласитесь стрелочные функции более удобный вариант для этого.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
artur_kudaev
@artur_kudaev
Frontend Developer
Можно ли по правилам React писать так функции? Тоесть чтобы было слово function и return?

В реакте можно использовать чистый js
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы