1
ほとんど同じJSX構造を持つコンポーネントがあります。これらの成分は、Panel
,SidePanel
,Card
およびModal
である。ほぼ同じJSX構造のコンポーネントをリファクタリングする方法
私はBEM
というCSSクラス名の命名規則と、イベントハンドラ関数と、イベントハンドラ関数がトリガされる場所と方法が異なるため、唯一の違いはclassName
です。
複製されたJSXの使用を防ぐために、これらのコンポーネントをどのようにリファクタリングする必要がありますか?
以下は私のパネルとサイドパネルのコンポーネントJSXから2例、
<div>
<article
className={classes}
id={this.props.id}
style={this.props.style}
>
{title && (
<div className="panel__title">
<h3>{title}</h3>
</div>
)}
<div className="panel__content">{this.props.children}</div>
{toolbarButtons && (
<footer className="panel__footer">{toolbarButtons}</footer>
)}
</article>
</div>
サイドパネル、
<div>
<article className={classes} id={id} style={style}>
{title && (
<div className="side-panel__title">
<h3>{title}</h3>
</div>
)}
<div className="side-panel__content">{children}</div>
{toolbarButtons && (
<footer className="side-panel__footer">{toolbarButtons}</footer>
)}
</article>
</div>
であり、あなたはすでにこれらの2つのコンポーネント間の類似性を見ることができます。
うん、それは私ですしかし、複雑な部分は、これらのコンポーネントのための異なるイベント処理ロジックです。 –
イベントハンドラはどこですか?あなたのコードには表示されません – klugjo
コンポーネントがマウントされた時点で 'document.addEventListener'経由で追加されます –