Декораторы с методами в компонентах React - PullRequest
0 голосов
/ 11 октября 2018

Я пытаюсь украсить один из методов в моем компоненте реакции, проверить реквизиты и состояния, а затем что-то с ними сделать.Однако я не уверен, почему this всегда undefined, но он получает контекст class / this, когда я использую описанные выше методы жизненного цикла.

Пример кода:

import dosomething from 'utils/dosomething';
import Button from 'button';
class App extends React.Component {
  // this shows this context in dosomething
  @dosomething
  componentWillMount() {
      // John Doe written codes.
  }
  // this doesn't shows this context in dosomething
  @dosomething
  someMethod() {
      // John Doe written codes.
  }
  render() {
      return <Button
                {...this.props}
                onClick={this.someMethod}
              />
  }
}

Тогда мой декоратор

//utils/dosomething.js 
export function dosomething(target, name, descriptor) {
  const decoratee = descriptor.value;
  descriptor.value = function decorated(...args) {
    // shows defined for componentWillMount but undefined for methods
    console.log(this);
    decoratee.apply(this, args);
  };
}

Как мне получить доступ к this контексту из метода?

...