Если вы разрабатываете на React или просто «пишете» на ECMAScript 6 и часто пользуетесь классами, то вам наверняка приходится бороться за сохранность контекста при вызове функций.
По нашим наблюдениям, эту проблему, как правило, решают с помощью bind:
this.doSomething.bind(this)
Мало кто знает, что можно избавиться от «кучи» bind-ов:
Если подключить к проекту babel-плагин
transform-class-properties, то станет возможным использование в классах стрелочных функций, которые не теряют контекст экземпляра класса: class Test extends Component {
doSomething = () => {
this.setState({ done: true });
}
render() {
return <div onClick={this.doSomething}>Do it</div>
}
}Кроме того, у плагина есть ещё несколько классных возможностей (например, установка дефолтных свойств экземпляра без конструктора) с которыми можно ознакомиться перейдя по прикрепленной ссылке.