如何綁定this
與transform-decorators-legacy
Babel插件? 例如,我有一些簡單的裝飾器。裝飾工程,但this
未定義組件的方法。在React中使用方法裝飾器時將此屬性綁定到
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)
}
}
如果我嘗試了一些@autobind裝飾用@myDecorator我得到 TypeError: Invalid property descriptor. Cannot both specify accessors and a value or writable attribute
,因爲
的數據描述符是具有價值,這可能會或可能是不可寫的屬性。訪問器描述符是由getter-setter函數對描述的屬性。描述符必須是這兩種口味之一;它不可能是兩個。
在我的例子,我不能使用value()
和get()
。
綁定在構造函數(this.myMethod = thid.myMethod.bind(this)
)似乎也沒有幫助,因爲你綁定undecorated方法。
按照你的建議,'this'指向'React.Component'而不是'MyCl屁股' – OlehZiniak
嗯,似乎工作。有趣的是,我100%肯定我已經嘗試過相同的方法,並且它不工作,'this'是'undefined'。你能解釋一下爲什麼你需要'props = this.props'這一行嗎? – OlehZiniak