super() - вызов родительского класса на данном экземпляре, чтобы наследование сработало.
А bind в данном случае - от скудоумия разработчиков react которые не смогли в компоненты на классах. Привязка методов из прототипа к конкретному экземпляру.
Лично я это в самом темплейте через arrow function решал.
Negwereth они же сначали биндили (если использовать createReactClass), но потом отказались, аргументов точно не помню, но речь была о том (по-моему), что не всем это удобно (так как не в каждом методе компонента нужен this).
Илья Ростопка: вы этот код запускали? Он рабочий?
Ну и прототипы в JS никуда не делись, классы сахар обычный. И говоря, что разрабы не смогли, я имею в иду именно этот ход с биндингом метода в экземпляр вместо того, чтобы брать его из прототипа.
Negwereth: у меня на этом коде рабочее приложение есть, конечно он рабочий)
И говоря, что разрабы не смогли, я имею в иду именно этот ход с биндингом метода в экземпляр вместо того, чтобы брать его из прототипа.
Ну я думаю это больше вина сырости классов, чем разработчиков React'a. Разработчики React'a просто стараются придерживатся нативного JS, а он, к сожалению, не идеален.
Илья Ростопка: а, стоп, не рассмотрел код с первого раза.
У вас там не ES, такая запись свойств ещё на утверджена. Я думал, вы метод через стрелочную функцию задаёте, такой фокус работать не должен.
А так вы то же самое делаете, что и с биндингом, создавая метод в самом экземпляре.
Negwereth: я понял, что вы имели в виду. Но ваш способ не лучше: у вас на каждом событии клика будет создаваться новая функция, что все таки не совсем гуд. С точки зрения синтаксиса мне нравится мой метод больше. А для создания методов в самом классе по сути есть keyword static.
У вас там не ES
Stage 2 это уже неплохо, я не думаю, что что-то поменяется кардинально, в React-комьюнити такой способ биндинга используется уже довольно давно.