Использую ReactJS, пишу на ECMASсript 7 и использую транслятор BabelJS.
Есть два варианта объявления свойства state:
Первый:
constructor(props) {
super(props);
this.state = {
total: null,
next: null,
operation: null,
};
Второй:
state = {
total: null,
next: null,
operation: null,
}
Есть ли разница между двумя этими вариантами?
В рамках ES7 разницы по сути нет, оба вызова ведут к тому, что из всех методов класса, нам будет доступна ссылка this.state, а самая большая и главная разница тут в том, что все современные браузеры, пока вообще не поддерживают ES7, и для второго варианта, вам нужно использовать транслятор, первый же вариант, абсолютно ES6 совместим, соответственно поддерживается почти всеми современными браузерами. И тут образовывается ситуация, если вы уже активно используете трансляторы, то вы также смело можете использовать и объявление свойств в стиле ES7. Но лучше конечно, не использовать трансляторы вообще.
К тому же многие люди сейчас все еще живут в ES5 стиле, когда есть модный молодежный ES6, который еще так молод...
Сборка персонального компьютера от Artline: умный выбор для современных пользователей