父组件向子组件传值最基本的方法如下
子组件通过props接收
// 父组件
<template>
<div>
我是父组件
<testApi :environmentId="environmentId"></testApi>
</div>
</template>
<script>
import testApi from '@/views/apiManage/testApi'
export default {
data() {
return {
environmentId: ''
}
},
components: {
testApi
}
}
// 子组件
<template>
<div>
我是子组件
{
{
environmentId }}
</div>
</template>
<script>
export default {
// 接受父组件的值
props: {
environmentId: {
type: String// 定义接收到的数据的类型
default: '这个数据变量的默认值',
required: false //规定这个数据是否必传,默认false
}
},
data() {
return {
}
},
mounted () {
console.log(this.environmentId)
}
}
第二种方法是直接通过this.$refs.myTestApi.title = ‘’ 设置子组件里面的值
// 父组件
<template>
<div>
我是父组件
<button @click="change">改变子组件里面的值</button>
<testApi ref="myTestApi"></testApi>
</div>
</template>
<script>
import testApi from '@/views/apiManage/testApi'
export default {
data() {
return {
}
},
components: {
testApi
},
methods: {
change() {
this.$refs.myTestApi.title = '新增产品'
}
}
}
// 子组件
<template>
<div>
我是子组件
{
{
title }}
</div>
</template>
<script>
export default {
data() {
return {
title: ''
}
},
mounted () {
console.log(this.title)
}
}
子组件调用父组件的方法如下:
第一种方法:子组件里用$emit向父组件触发一个事件,父组件监听这个事件
// 父组件
<template>
<div>
我是父组件
<button @click="change">方法</button>
<testApi @change="change"></testApi>
</div>
</template>
<script>
import testApi from '@/views/apiManage/testApi'
export default {
data() {
return {
}
},
components: {
testApi
},
methods: {
change() {
console.log('我是猪')
}
}
}
// 子组件
<template>
<div>
我是子组件
{
{
title }}
</div>
</template>
<script>
export default {
data() {
return {
title: ''
}
},
mounted () {
this.$emit('change')
}
}
第二种直接在子组件中通过this.$parent.event来调用父组件的方法
// 父组件
<template>
<div>
我是父组件
<button @click="change">方法</button>
<testApi></testApi>
</div>
</template>
<script>
import testApi from '@/views/apiManage/testApi'
export default {
data() {
return {
}
},
components: {
testApi
},
methods: {
change() {
console.log('我是猪')
}
}
}
// 子组件
<template>
<div>
我是子组件
{
{
title }}
</div>
</template>
<script>
export default {
data() {
return {
title: ''
}
},
mounted () {
this.$parent.change()
}
}
第三种父组件把方法传入子组件中,在子组件里直接调用这个方法
// 父组件
<template>
<div>
我是父组件
<button @click="change">方法</button>
<testApi :change="change"></testApi>
</div>
</template>
<script>
import testApi from '@/views/apiManage/testApi'
export default {
data() {
return {
}
},
components: {
testApi
},
methods: {
change() {
console.log('我是猪')
}
}
}
// 子组件
<template>
<div>
我是子组件
{
{
title }}
</div>
</template>
<script>
export default {
props: {
change: {
type: Function,
default: null
}
},
data() {
return {
title: ''
}
},
mounted () {
this.change()
}
}
参考此篇文章 Vue子组件调用父组件的方法,各种用法可能效率不同,想要深入研究的,欢迎在网上继续查找详细资料