バインドする方法this
をtransform-decorators-legacy
としますBabel Plugin? たとえば、私はシンプルなデコレータを持っています。デコレータは機能しますが、コンポーネントのメソッドでthis
は未定義です。私はいくつかの@autobindデコレータで@myDecorator使用しようとする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) } }
私は、
TypeError: Invalid property descriptor. Cannot both specify accessors and a value or writable attribute
得ます。アクセサー・ディスクリプタは、ゲッター・セッター・ペアの関数で記述されるプロパティーです。記述子は、これらの2つのフレーバのいずれかでなければなりません。それは両方になることはできません。
私の例では、私はとget()
を使用できません。
デコレートされていないメソッドをバインドするので、コンストラクタ(this.myMethod = thid.myMethod.bind(this)
)でのバインディングは役に立ちません。
提案したように、 'this'は' React.Component'を指していて、 'MyClお尻 ' – OlehZiniak
うーん、うまくいくようだ。面白いことに、私は100%確信しています。私は同じアプローチを試みましたが、それは動作していませんでした。これは「未定義」です。なぜ 'props = this.props'という行が必要なのか説明してください。 – OlehZiniak