vue 组件传参
1.props & event
父组件向子组件传递props数据,子组件通过触发事件向父组件回传数据。
2.ref
ref属性可定义在子组件或原生DOM上,如果在子组件上,则指向子组件实例,如果在原生DOM上,则指向原生DOM元素(可以用做元素选择,省去querySelector的烦恼)。
父组件:
<template><div>
<el-button @click="dialogStatus = true">点击打开对话框</el-button>
<el-button @click="sendMessage">点击传参</el-button>
<son ref="son" :is_dialog="dialogStatus" @handleChange="handleSonChange"/>
</div>
</template>
<script>
import son from './son'
export default {
components: {
son
},
data() {
return {
dialogStatus: false, // 对话框状态, 默认关闭
message: '父组件向子组件传参'
}
},
methods: {
// 通过子组件handleChange 返回得到子组件对话框当前的状态
handleSonChange(val) {
this.dialogStatus = val
},
// 父组件向子组件传参(方式一) 通过 :参数名="数据"
// 父组件向子组件传参(方式二)
sendMessage() {
this.$refs.son.setMsg(this.message)
}
}
}
</script>
子组件:
<template><el-dialog
v-dialogDrag
:visible.sync="is_dialog_v"
title="子组件">
<span>{{ message }}</span>
</el-dialog>
</template>
<script>
export default {
props: {
// 父组件传参
is_dialog: {
type: Boolean,
default: false
}
},
data() {
return {
is_dialog_v: this.is_dialog, // 控制dialog显示
message: ''
}
},
watch: {
// 监听父组件传过来的参数是否变化
is_dialog(newData, oldData) {
this.is_dialog_v = newData
},
// 监听弹框状态
is_dialog_v(newData, oldData) {
// 子组件向父组件传参(handleChange: 子组件自定义的方法, 返回弹框当前的状态)
this.$emit('handleChange', newData)
}
},
methods: {
// 父组件调用子组件的方法
setMsg(msg) {
this.message = msg
}
}
}
</script>
以上是 vue 组件传参 的全部内容, 来源链接: utcz.com/z/379986.html