xoma2
@xoma2
Программист

Есть ли способ не привязывать каждую функцию в которой нужен this в ES6 React?

constructor (props) {
        super(props);
        this.toggleMenu = this.toggleMenu.bind(this);
        this.showSidebar = this.showSidebar.bind(this);
        this.resize = this.resize.bind(this);
        this.toggleMenuByClick = this.toggleMenuByClick.bind(this);
        this.showSidebarByClick = this.showSidebarByClick.bind(this);
        this.state = {
            toggleMenu: false,
            showSidebar: false,
            height: 'auto'
        };
    }

Пример
  • Вопрос задан
  • 235 просмотров
Решения вопроса 2
В babel с пометкой stage-0 есть такая штука - https://github.com/jeffmo/es-class-static-properti...

Она позволяет делать так:

class MyClass {
  foo = () => {
    console.log('foo a = ', this.a);
  }

  bar = () => {
    this.a = 10;
    setTimeout(this.foo, 10); // Мы не биндим foo на this
  }
}

const o = new MyClass();
const bar = o.bar; // и тут тоже не биндим

bar(); // выводит "foo a = 10"
Ответ написан
Комментировать
Binding to methods of React class (ES7 included)
Мне нравится использовать стрелочные функции и свойства классов от es7
onMouseMoveHandler = (e) => {
    if (this.state.active) {
    ....
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы