Auxコンポーネント対反応断片-どちらがよりよいですか?
9454 ワード
このブログ記事では、コンポーネントの複数の要素を返す方法を検討します
どのような要素が返されるのかをメモリでリフレッシュしてみましょう.JSXではJavaScriptのHTML要素を書くことができます
例:
例では
複数の要素を返したいなら、それを必要としない
次の例を調べましょう
この問題は2つの方法で解決できます.
1/Auxコンポーネント(補助)または
2/を使用します.フラグメントコンポーネント
両方の方法を調べましょう.
反応の高次コンポーネントは、コードを繰り返すことなくコンポーネント間の共通の機能を共有するために使用されるパターンです.Hostは実際にはコンポーネントではありませんが、関数です.Host関数は引数としてコンポーネントを受け取り、コンポーネントを返します.コンポーネントを別のコンポーネントに変換し、追加のデータまたは機能を追加します.
要するに
反応する.フラグメントは2.0で反応しました.
この例ではラッパーを簡単に変更できます
同じ仕事をするので、両方の変形を使用することができます-余分な層を加えることなく複数のJSX要素を返すのを許してください 使用 私のブログを読んでくれてありがとう、あなたのコメントありがとうございます.
render
(クラスベースの)またはreturn
(関数の場合)どの要素を返しますか?
どのような要素が返されるのかをメモリでリフレッシュしてみましょう.JSXではJavaScriptのHTML要素を書くことができます
createElement()
//appendChild()
メソッド.例:
return() {
<div>
<h1>Hello World!</h1>
</div>
}
しかし、我々はまた、「フードの下で」Babelコンパイラがあることを知っていますReact.createElement()
機能return() {
React.createElement('div', {}, [
React.createElement('h1', {}, 'Hello World!')
]);
}
それで、あなたが見ることができるように.React.createElement
つのタイプの要素だけを受け入れることができますdiv
and h1
) 最初のパラメータとして.JSXを関数または文から返すときには、単一の要素を返す必要があります.例では
div
JSX用のシングルまたはトップの要素です.複数の要素
複数の要素を返したいなら、それを必要としない
div
コンテナ?次の例を調べましょう
const Table = () => {
return (
<table>
<tr>
<Columns />
</tr>
</table>
);
}
コンポーネント<Columns />
そのターンでは、いくつかの列をレンダリングします.const Columns = () => {
return (
<div>
<td>Column 1</td>
<td>Column 2</td>
</div>
);
}
上記のコードの結果、我々はHTMLから不正なHTMLを取得しています<Table />
ページのコンポーネント<table>
<tr>
<div>
<td>Column 1</td>
<td>Column 2</td>
</div>
</tr>
</table>
解決策
この問題は2つの方法で解決できます.
1/Auxコンポーネント(補助)または
2/を使用します.フラグメントコンポーネント
両方の方法を調べましょう.
Aux (補助)コンポーネントまたは
反応の高次コンポーネントは、コードを繰り返すことなくコンポーネント間の共通の機能を共有するために使用されるパターンです.Hostは実際にはコンポーネントではありませんが、関数です.Host関数は引数としてコンポーネントを受け取り、コンポーネントを返します.コンポーネントを別のコンポーネントに変換し、追加のデータまたは機能を追加します.
要するに
const NewComponent = (BaseComponent) => {
// ... create new component from old one and update
return UpdatedComponent
}
他のコンポーネントのコンテナーとして使用できます(この場合、プロジェクトでは補助コンポーネントやAUXと呼ばれます).この場合、それは単にprops
引数と返り値children
:const Aux = (props) => props.children;
export default Aux;
この例ではラッパーを簡単に変更できますdiv
with Aux
:const Columns = () => {
return (
<Aux>
<td>Column 1</td>
<td>Column 2</td>
</Aux>
);
}
そして問題解決!反応する。断片
反応する.フラグメントは2.0で反応しました.
React.Fragment
断片がDOMに与えられないので、あなたはDOMに余分なノードを加えることなく子供たちのリストをグループ化しましょう.だから基本的に我々は反応を使用します.通常、ラッパーを使用するフラグメントdiv
. この例ではラッパーを簡単に変更できます
div
with React.Fragment
:const Columns = () => {
return (
<React.Fragment>
<td>Column 1</td>
<td>Column 2</td>
</React.Fragment>
);
}
またはフラグメントは、空のタグのように短い構文で宣言することもできます.const Columns = () => {
return (
<>
<td>Column 1</td>
<td>Column 2</td>
</>
);
}
そして問題解決!まとめ
React.Fragment
あなたは余分なコンポーネントを作成する必要がないので、より多くの利点があり、それは少しより速いとメモリ使用量が少ない(余分なDOMノードを作成する必要はありません).Reference
この問題について(Auxコンポーネント対反応断片-どちらがよりよいですか?), 我々は、より多くの情報をここで見つけました https://dev.to/olenadrugalya/aux-component-vs-react-fragment-which-one-is-better-3e0kテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol