Vue常用コンポーネントの開発
4741 ワード
表示
テキストサイトより多くの拡張コンテンツとより良い読書体験!
実戦:常用コンポーネントの開発
数字入力ボックスには数字しか入力できません.また、2つのショートカットボタンがあり、直接1を減らしたり、1を加えたりすることができます.このほか、初期値、最大/小値を設定し、数値が変更されたときにカスタムイベントをトリガーして親コンポーネントに通知することもできます.
ディレクトリファイル: まず
次に、親コンポーネントに
Vueコンポーネントの場合、一方向データストリームは、コンポーネント内部から
解決策は、コンポーネントに
これにより、初期化時に親コンポーネント
リスニング(
親コンポーネントから渡された
コールバック関数では、
傍受
ライフサイクル
See the Pen Vueコンポーネントの例 by whjin ( @whjin ) on CodePen .https://static.codepen.io/ass...</a>;>
タブページコンポーネント
各ラベル・ページのマスター・コンテンツは、コンポーネントを使用する親によって制御され、この部分は
ファイルディレクトリ:
各
各
コンポーネントをネストする方法で、一連の
See the Pen Vue-tabs by whjin ( @whjin ) on CodePen .https://static.codepen.io/ass...</a>;>
テキストサイトより多くの拡張コンテンツとより良い読書体験!
実戦:常用コンポーネントの開発
数字入力ボックスには数字しか入力できません.また、2つのショートカットボタンがあり、直接1を減らしたり、1を加えたりすることができます.このほか、初期値、最大/小値を設定し、数値が変更されたときにカスタムイベントをトリガーして親コンポーネントに通知することもできます.
ディレクトリファイル:
index.html
入口ページinput-number.js
デジタル入力ボックスコンポーネントindex.js
ルートインスタンスtemplate
でコンポーネントのルートノードを定義し、独立したコンポーネントであるため、各prop
を検証する必要があります.次に、親コンポーネントに
input-number
コンポーネントを導入します.value
は、v-model
を使用する重要なバインド値です.ほとんどのフォームコンポーネントには、入力ボックス、ラジオボックス、マルチ選択ボックス、ドロップダウンセレクタなどのv-model
が必要です.Vueコンポーネントの場合、一方向データストリームは、コンポーネント内部から
prop value
の値を直接変更することはできません.解決策は、コンポーネントに
data
を宣言し、デフォルトでvalue
の値を参照し、コンポーネント内でこのdata
を維持することです.Vue.component('input-number', {
data() {
return {
currentValue: this.value
}
}
});
これにより、初期化時に親コンポーネント
value
を参照する問題のみが解決されるが、親コンポーネントからvalue
が変更された場合、input-number
コンポーネントのcurrentValue
も一緒に更新される.リスニング(
watch
),watch
オプションは、prop
またはdata
の変更をリスニングするために使用され、それらが変化すると、watch
構成の関数がトリガーされ、ビジネスロジックが完了する.親コンポーネントから渡された
value
は、現在の条件(max
より大きいか、またはmin
より小さい)に合致しない可能性があるため、methods
に正しいupdateValue
をフィルタする方法currentValue
が記載されている.watch
傍受されたデータのコールバック関数には、2つのパラメータが使用可能であり、1つ目は新しい値であり、2つ目は古い値である.コールバック関数では、
this
は現在のコンポーネントインスタンスを指します.したがって、this.updateValue()
を直接呼び出すことができる.Vueはprops
、data
、computed
およびmethods
をエージェントしているからである.傍受
currentValue
のコールバックでは、this.$emit('input',val)
を使用するとv-model
が変更され、value
はカスタムイベントthis.$emit('on-change',val)
がトリガーされ、親コンポーネントの数値入力ボックスの値が変化したことを通知するために使用される.ライフサイクル
on-change
フックにもmounted
メソッドが呼び出されたのは、最初の初期化時にupdateValue()
もフィルタリングされたためである.value
は、データinput
とオリジナルのcurrentValue
イベントとがバインドされ、ハンドルchange
関数では、現在入力されている時刻数が判定される.See the Pen Vueコンポーネントの例 by whjin ( @whjin ) on CodePen .https://static.codepen.io/ass...</a>;>
タブページコンポーネント
各ラベル・ページのマスター・コンテンツは、コンポーネントを使用する親によって制御され、この部分は
handleChange
であり、slot
の数によってラベル切替ボタンの数が決定される.ファイルディレクトリ:
slot
入口ページindex.html
スタイルシートstyle.css
ラベルページ外層のコンポーネントtabstabs.js
ラベルページネストされたコンポーネントpanepane.js
ラベルページの内容の表示と非表示を制御し、pane
を設定し、data:show
命令で要素を制御する必要がある.v-show
は、getTabs
を使用してすべてのthis.$children
コンポーネントインスタンスを取得する共通の方法である.pane
にmethods
コールバックの方法が使用されている場合、コールバック内のfunction
は現在のVueインスタンス、すなわちthis
コンポーネント自体を実行せず、tabs
の局所変数を外層に1つ設定して間接的に_this=this
を使用する必要がある.各
this
コンポーネントを巡回した後、そのpane
とlabel
を抽出し、name
を構成し、データObject
配列に追加する.navList
コマンドループ表示v-for
ヘッダを使用する場合、tab
を使用してv-bind:class
という名前のtabCls
を指し、methods
名を動的に設定します.各
class
タイトルをクリックすると、tab
メソッドがトリガーされ、現在選択されているhandleChange
のインデックス、すなわちtab
コンポーネントのpane
が変更されます.name
オプションでwatch
が傍受され、変更が発生するとcurrentValue
メソッドがトリガーされてupdateStatus
コンポーネントの表示状態が更新される.コンポーネントをネストする方法で、一連の
pane
コンポーネントpane
コンポーネントのtabs
; slot
コンポーネントおよびtabs
コンポーネント通信では、pane
および$parent
のメソッドは、親チェーンおよび子チェーンにアクセスする.定義済み$children
およびprop:value
,使用data:currentValue
で実現$emit('input')
の使い方.See the Pen Vue-tabs by whjin ( @whjin ) on CodePen .https://static.codepen.io/ass...</a>;>