vue 组件传参

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

回到顶部