VueJsコンポーネントにおける親子通信の方法

不言
リリース: 2018-05-07 14:57:36
オリジナル
1192 人が閲覧しました

この記事は主に VueJs コンポーネントでの親子コミュニケーションの方法を紹介しています。非常に優れており、必要な友人は参照してください。

コンポーネント (親子コミュニケーション)

1. 概要

別のコンポーネント内で定義されたコンポーネントは、親子コンポーネントと呼ばれます。 1 ただし、次の点に注意してください。 1. 子コンポーネントは親コンポーネント (親コンポーネント Tempalte で記述) 内でのみ使用できます

2. デフォルトでは、子コンポーネントは親コンポーネントのデータにアクセスできません。コンポーネント インスタンス スコープは独立しています。

簡単な文で言うと、props が下にあり、event が up です。親コンポーネントは props を介して子コンポーネントにデータを渡し、子コンポーネントは にデータを送信します。イベントを介した親コンポーネント

親 息子から息子への受け渡し: Props

息子から父親への受け渡し: 息子: $emit(eventName) 親 $on(eventName)

息子を訪問する親: ref

以下は 3 つのケースの説明です。

2. 父から息子への受け渡し: 小道具 コンポーネントインスタンスのスコープは分離されています。これは、子コンポーネントのテンプレート内で親コンポーネントのデータを直接参照できない (また、参照すべきではない) ことを意味します。子コンポーネントが親コンポーネントのデータを使用できるようにするには、子コンポーネントの props オプションを使用する必要があります

。Prop を使用してデータを転送するには、まず静的 props の効果を紹介します

。 static props


ログイン後にコピー

:

命名規則:

props によって宣言された属性の場合、親 HTML テンプレートでは、属性名をダッシュ​​で記述する必要があります

子 props 属性が宣言されている場合は、小さなキャメル ケースまたはダッシュを使用してください。どのような記述方法でも受け入れられます。子テンプレートが親から渡された変数を使用する場合は、対応するキャメル ケースを使用する必要があります

上記の文はどういう意味ですか?

ログイン後にコピー

childNode の myMessage を {{my-message}} に変更すると、実行結果が表示されます:

2. テンプレートでは、次のデータを動的にバインドする必要があります。親コンポーネントの子テンプレートへの Props は、v-bind を使用して通常の HTML 機能にバインドされます。親コンポーネントのデータが変更されると、その変更は子コンポーネントにも送信されます

 var childNode = {
  template: '

{{myMessage}}

', props: ['my-message'] } var parentNode = { template: `

`, components: { 'child': childNode }, data() { return { 'data1': '111', 'data2': '222' } } };
ログイン後にコピー

3. 数値を渡す

初心者がよく犯す間違いは、リテラル構文を使用して値を渡すことです


ログイン後にコピー

結果:

これはリテラル小道具であるため、その値は数値ではなく文字列「1」になります。実際の数値を渡したい場合は、その値が JS 式として計算されるように v-bind を使用する必要があります

文字列を数値に変換するには、実際には 1 か所だけ変更する必要があります。

 var parentNode = {
  template: `
 

//只要把父组件my-message="1"改成:my-message="1"结果就变成number类型

`, };
ログイン後にコピー

もちろん、v-bind を通じて文字列型を渡したい場合はどうすればよいでしょうか?

動的プロパティを使用して、データ属性に対応する数値 1 を設定できます

var parentNode = {
 template: `
 

`, components: { 'myChild': childNode }, //这里'data': 1代表就是number类型,'data': "1"那就代表String类型 data(){ return { 'data': 1 } } };
ログイン後にコピー

3. 子から親へ: $emit

$emit の使用法について 1. 親コンポーネントは props を使用して子コンポーネントにデータを渡すことができます。

2. サブコンポーネントは $emit を使用して親コンポーネントのカスタム イベントをトリガーできます。

子の主キー


 
ログイン後にコピー

親コンポーネント