Как связать this
с transform-decorators-legacy
Babel plugin? Например, у меня есть простой декоратор. Декоратор работает, но this
не определен по методу компонента.Привязать это при использовании декораторов-декораторов в реактиве
fucntion myDecorator(target, name, descriptor) {
var oldValue = descriptor.value;
descriptor.value = function() {
...// Doing some stuff here I need the decorator for
...// (for example logging on every method call)
return oldValue.apply(null, arguments);
};
return descriptor;
}
class MyClass extends React.Component {
@myDecorator
myMethod() {
...// this.props... is unavailable here(`this` is undefined)
}
}
Если я пытаюсь использовать @myDecorator с некоторыми @autobind декораторов я получаю TypeError: Invalid property descriptor. Cannot both specify accessors and a value or writable attribute
, потому что
Дескриптор данных это свойство, которое имеет значение, которое может или не может быть доступен для записи. Дескриптор доступа - это свойство, описываемое парой функций getter-setter. Дескриптор должен быть одним из этих двух вариантов; это не может быть и то, и другое.
В моем примере я не могу использовать value()
и get()
.
Связывание в конструкторе (this.myMethod = thid.myMethod.bind(this)
) также не очень полезно, потому что вы связываете метод без декодирования.
Выполнение, как вы сказали, 'this' указывает на' React.Component', а не 'MyCl ass' – OlehZiniak
Хм, похоже, работа. Забавно, я на 100% уверен, что пробовал такой же подход, и он не работал, причем '' '' '' 'undefined'. Не могли бы вы объяснить, почему вам нужна строка 'props = this.props'? – OlehZiniak