React, разница в месте определения state

175
14 мая 2018, 04:40

Использую 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,
  }

Есть ли разница между двумя этими вариантами?

Answer 1

В рамках ES7 разницы по сути нет, оба вызова ведут к тому, что из всех методов класса, нам будет доступна ссылка this.state, а самая большая и главная разница тут в том, что все современные браузеры, пока вообще не поддерживают ES7, и для второго варианта, вам нужно использовать транслятор, первый же вариант, абсолютно ES6 совместим, соответственно поддерживается почти всеми современными браузерами. И тут образовывается ситуация, если вы уже активно используете трансляторы, то вы также смело можете использовать и объявление свойств в стиле ES7. Но лучше конечно, не использовать трансляторы вообще.

К тому же многие люди сейчас все еще живут в ES5 стиле, когда есть модный молодежный ES6, который еще так молод...

READ ALSO
js поиск на странице

js поиск на странице

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

190
Модальное окно через таймер

Модальное окно через таймер

Возможно ли как то установить таймер этому плагину pop -up окна чтобы когда user зашел на страницу через к примеру 2 секунды сработал скрипт а не по клику

220
Анимация DOM-узла в момент удаления его из DOM

Анимация DOM-узла в момент удаления его из DOM

В DOM-записывается новый элемент, затем по истечению 2-х секунд он удаляетсяКак анимировать этот элемент в момент удаления из DOM? Например, чтобы...

180
Не работает tubular js в IE 10

Не работает tubular js в IE 10

Поставил на бэкграунд видео с ютуба, но заметил, что загружается оно не каждый разА в IE вообще не показывается

200