@myDecorator
(バベルを使用)の構文を使用することに非常に興奮しています。私はライフサイクル機能の1つ、具体的にはcomponentWillMount
をデコレートし、デコレータ内のコンポーネントのprops
とcontext
をチェックしようとしています。しかし、props
またはcontext
のいずれにもアクセスできないようです。私はこれがアンチパターンの一種であるかどうか、あるいは私がちょうどこの間違ったことをしているかどうかはわかりません。反応成分を持つデコレータ
小さな例:
// TestComponent.jsx
import checkProps from 'checkProps.js';
class TestComponent extends React.Component {
@checkProps
componentWillMount() {
// Do something.
}
render() {
return <div>My Component</div>
}
}
と
// checkProps.js
export function checkProps(target) {
console.log(target.props);
}
私はまた、デコレータとthis
をチェックするために、矢印の機能を試してみましたが、私はデコレータがそのように動作するものを構成するとは思いません。
また、私のデコレータを工場にして、this.props
とthis.context
を渡してみましたが、コンポーネントのライフサイクル機能をデコレートするときは、this
は未定義です。
私の悪い私は、デコレータは、クラスではなく、コンストラクタに追加する必要があると考えています。 –
@moderndegreeクラスをデコレートするとき、同じ 'Component'オブジェクトを公開します。私も申し訳ありませんがそれを試して説明する必要があります。 – Shawn
@Brandon私はまだそこに何もしていません。コード例の一番下に示すように、 'checkProps.js'というコメントを付けて、その中からその小道具にアクセスできるようにしたいだけです。私はそれらを分けて、それがより明確になるようにします。 – Shawn