ExtendedComponent
に<p>
タグを追加したい場合は、super.render()
を呼び出してください。問題は既に定義済みのjsxオブジェクトを変更できるかどうかわかりません。理想的には、parentTemplate + <p>Some paragraph</p>
と書くだけですが、うまくいきません。React JSXオブジェクトをどのように反復するか
class BaseComponent extends React.Component {
get title() {
return 'I am base component';
}
render() {
return <h1>Hello {this.title}</h1>;
}
}
class ExtendedComponent extends BaseComponent {
get title() {
return 'I am extended component';
}
render() {
var parentTemplate = super.render();
// append <p>Some paragraph</p> to parentTemplate
return parentTemplate;
}
}
ReactDOM.render(
<ExtendedComponent />,
document.getElementById('test')
);
このパターンはなぜ好奇心からですか?なぜ、2つのコンポーネントが他のコンポーネントを 'render'の内部でラップするのではないでしょうか? – azium
私は特に、子コンポーネントのレンダリングと別のメソッドの両方を調整したいときは、私にとってもっと自然な感じです。この場合、いくつかのメソッドを調整するために最初にコンポーネントを拡張し、それをレンダリングメソッドの別のコンポーネントにラップしてhtmlを追加する必要があると感じます。私の方法は、一つの石で2羽の鳥を殺すだろう – klis87
あなたのために働くことができれば、それは良いと思うが、これは非常に頻繁にリアクションコードに表示されません。継承は維持しなければならない苦痛であり、上位コンポーネントのようなものでは、コンポーネントの構成は容易に達成できます。あなたが継承モデルを捨てたいなら、私は喜んで答えを提供します。 – azium