Typescriptアクセサリを使用してReactコンポーネントをハイジャック
1279 ワード
最近はTypescriptのデコレーションを叩いているのですが、NodeJsプロジェクトのデコレーションがわかりやすいのですが、ReactプロジェクトのデコレーションはJSXがあるので少し回り道をしましたが、とにかく
アクセラレータは、クラス宣言、メソッド、アクセス記号、プロパティ、またはパラメータにアタッチできる特殊なタイプの宣言です.デザイナは@expressionという形式を使用しており、expressionが評価された後は関数でなければなりません.実行時に呼び出され、デザイナの宣言情報がパラメータとして入力されます.
装飾器は
React例
Parent.tsx
Component装飾器
レンダリング後の
プロジェクトアドレス
react-decorator-example
文後
本稿では、比較的簡単な装飾器の使い方について述べるが、
TSに興味のある仲間は私の微信交流を加えることができます~
get
typescriptアクセサリーの説明アクセラレータは、クラス宣言、メソッド、アクセス記号、プロパティ、またはパラメータにアタッチできる特殊なタイプの宣言です.デザイナは@expressionという形式を使用しており、expressionが評価された後は関数でなければなりません.実行時に呼び出され、デザイナの宣言情報がパラメータとして入力されます.
装飾器は
の能力を提供してくれました.React例
Parent.tsx
@Component
export default class App extends PureComponent {
handleClick() {
console.log('parent click');
}
render() {
return (
parent
);
}
}
Component装飾器
function Component(component: T) { //
return class extends component {
handleClick() { // onClick
super.handleClick()
console.log('child clicked');
}
render() {
const parent = super.render()
// onClick
return React.cloneElement(parent, { onClick: this.handleClick })
}
}
}
レンダリング後の
parent
文字をクリックすると、ハイジャックに成功します.プロジェクトアドレス
react-decorator-example
文後
本稿では、比較的簡単な装飾器の使い方について述べるが、
のような装飾器を開発し、ビジネスロジックをよりよく組織することができる.TSに興味のある仲間は私の微信交流を加えることができます~