vue親子コンポーネントの値伝達の2つの方法
2891 ワード
1つ目は、methodsメソッドによって制御属性の値を変更することです.
親コンポーネント、コード:
サブコンポーネント、コードは次のとおりです.
2つ目は、watchによって値の変化を監視し、変更することです.
親コンポーネント、コード:
サブコンポーネント、コードは次のとおりです.
親コンポーネント、コード:
import child from './child.vue';
import user from './users.js'; // api
export default {
data() {
return {
visible: false,
list: [] //
}
},
components: {
child
},
methods: {
getList() {
// api
user.getList().then( res => {
this.visible = true;
this.list = res.message;
})
}
}
}
サブコンポーネント、コードは次のとおりです.
// , data
//
export default {
data() {
return {
dialogVisible: this.value
}
},
props: ['value', 'data'],
methods: {
close() {
this.dialogVisible = false;
this.$emit('input', this.dialogVisible)
}
}
}
2つ目は、watchによって値の変化を監視し、変更することです.
親コンポーネント、コード:
import child from './child.vue';
export default {
data(){
return {
visible: false
}
},
components: {
child
},
methods: {
handleClick() {
this.visible = true;
},
close(val) {
this.visible = val;
}
}
}
サブコンポーネント、コードは次のとおりです.
export default {
data() {
return {
dialogVisible: false
}
},
props: ['visible'],
watch: {
visible: {
handler(newVal,oldVal) {
this.dialogVisible = newVal;
},
deep: true
}
},
methods: {
close() {
this.$emit('close', false)
}
}
}