vueピット充填ピット(二):コンポーネント間の伝達問題
1859 ワード
コンポーネント開発では、サブコンポーネントの親コンポーネント間および兄弟コンポーネント間の値伝達の問題が発生することは避けられません.
1、親コンポーネントを子コンポーネントに渡す:
親コンポーネントがplaceholder値をサブコンポーネントに渡す必要がある場合は、親コンポーネントラベルでplaceholder=「XXX」を定義し、サブコンポーネントはdataでprops:['placeholder']を定義して受け入れ、受信したplaceholderはthis.labelで直接取り出すことができます.
注意:propsプロパティは使用のみを取り出すことができ、値を変更することはできません.
親コンポーネント:
サブアセンブリ:
2、サブアセンブリを親に渡す:
サブコンポーネントがinput入力ボックスの値を親コンポーネントに渡す必要がある場合、サブコンポーネントではトリガイベントv-on:blur=「change」(ここではフォーカスを失ったトリガを使用)を定義し、changeイベントで$emitを使用して値を伝え、親コンポーネントでは次のように定義します.
サブアセンブリ:
changeメソッド:
親コンポーネント:
3、兄弟コンポーネントの間で値を伝えます.
まず、vue導入ファイルHub.jsを定義する必要があります.
2つの値を伝達する必要があるコンポーネントは同時にHub.jsを導入する
コンポーネントA
コンポーネントB
123123
1、親コンポーネントを子コンポーネントに渡す:
親コンポーネントがplaceholder値をサブコンポーネントに渡す必要がある場合は、親コンポーネントラベルでplaceholder=「XXX」を定義し、サブコンポーネントはdataでprops:['placeholder']を定義して受け入れ、受信したplaceholderはthis.labelで直接取り出すことができます.
注意:propsプロパティは使用のみを取り出すことができ、値を変更することはできません.
親コンポーネント:
サブアセンブリ:
export default {
data() {
return {
modelValue:'',
}
},
props:['placeholder'],
}
2、サブアセンブリを親に渡す:
サブコンポーネントがinput入力ボックスの値を親コンポーネントに渡す必要がある場合、サブコンポーネントではトリガイベントv-on:blur=「change」(ここではフォーカスを失ったトリガを使用)を定義し、changeイベントで$emitを使用して値を伝え、親コンポーネントでは次のように定義します.
サブアセンブリ:
changeメソッド:
change(){
const self = this;
self.$emit('transferParamSelect',{value:self.modelValue});
}
親コンポーネント:
getParamSelect(msg){
console.log(this.msg.value); //
}
3、兄弟コンポーネントの間で値を伝えます.
まず、vue導入ファイルHub.jsを定義する必要があります.
import Vue from 'vue'
export default new Vue()
2つの値を伝達する必要があるコンポーネントは同時にHub.jsを導入する
import Hub from '../js/hub'
コンポーネントA
Hub.$emit('change',{value:self.modelValue}) //$emit , value B
コンポーネントB
Hub.$on('change',function(msg){
console.log(msg.value);
})
123123