Vue.js-関数化コンポーネント
2509 ワード
ラーニングノート:関数コンポーネント
関数コンポーネント
Vueは、
関数化コンポーネントを使用する場合、Render関数は、一時コンテキストを提供するために2番目のパラメータ
データ・インテリジェントに基づいて異なるコンポーネントを選択するシーンを関数化コンポーネントで示します.
See the Pen Vue-関数化コンポーネント-データに基づいてコンポーネントby whjin(@whjin)on CodePenを選択する.See the Pen Vue-createElement by whjin (@whjin) on CodePen.</p><br><script async src="https://static.codepen.io/ass...;>
JSX書き方:
See the Pen Vue-JSX by whjin (@whjin) on CodePen.See the Pen Vue-ソート可能テーブルコンポーネントby whjin(@whjin)on CodePen.</p><br><script async src="https://static.codepen.io/ass...;>
実戦:メッセージリスト
必要なデータにはニックネームと伝言内容があり、配布操作はルートインスタンス
配列
Render関数内のノードは、
リストデータ
See the Pen Vee-伝言リストby whjin(@whjin)on CodePen.
関数コンポーネント
Vueは、
functional
に設定されたブール値オプションを提供し、true
に設定すると、コンポーネントにステータスなしおよびインスタンスなし、すなわちdata
およびthis
コンテキストなしにすることができる.これにより、render
関数で仮想ノードを返すと、関数化コンポーネントが1つの関数にすぎないため、レンダリングコストが大幅に小さくなります.関数化コンポーネントを使用する場合、Render関数は、一時コンテキストを提供するために2番目のパラメータ
context
を提供します.コンポーネントに必要なdata
、prop
、slots
、children
、parent
は、このコンテキストによって伝達される.例えば、this.level
をcontext.props.level
に書き換え、this.$slots.default
をcontext.children
に変更する.データ・インテリジェントに基づいて異なるコンポーネントを選択するシーンを関数化コンポーネントで示します.
See the Pen Vue-関数化コンポーネント-データに基づいてコンポーネントby whjin(@whjin)on CodePenを選択する.See the Pen Vue-createElement by whjin (@whjin) on CodePen.</p><br><script async src="https://static.codepen.io/ass...;>
JSX書き方:
See the Pen Vue-JSX by whjin (@whjin) on CodePen.See the Pen Vue-ソート可能テーブルコンポーネントby whjin(@whjin)on CodePen.</p><br><script async src="https://static.codepen.io/ass...;>
実戦:メッセージリスト
必要なデータにはニックネームと伝言内容があり、配布操作はルートインスタンス
app
で完了しなければならない.伝言リストのデータもapp
から取得した.配列
list
はすべてのメッセージ内容を格納し、関数handleSend
を通じてlist
にメッセージデータを追加し、追加してtexrarea
テキストボックスを空にします.Render関数内のノードは、
v-model
:動的バインドvalue
:を使用し、input
イベントを傍受し、入力した内容を$emit('input')
を介して親コンポーネントに送信します.リストデータ
list
が空の場合、「リストが空」の情報プロンプトノードがレンダリングされます.空でない場合、各list-item
はニックネーム、伝言内容、返信ボタンの3つのサブノードを含む.this.list.forEach
はtemplate
の中のv-for
命令に相当し、各伝言を遍歴している.ハンドルhandleReply
は、親コンポーネントに直接イベントreply
を送信し、親コンポーネント(app
)が受信した後、現在のlist-item
のニックネームを抽出し、v-textarea
に設定します.See the Pen Vee-伝言リストby whjin(@whjin)on CodePen.