El componente padre vue pasa valores al componente hijo y el componente hijo llama al método del componente padre

El método más básico para que el componente padre pase el valor al componente hijo es el siguiente: el
componente hijo lo recibe a través de accesorios

// 父组件
<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)
	}
}

El segundo método es establecer directamente el valor en el componente secundario a través de esto. $ 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)
	}
}

El método para que el componente secundario llame al componente principal es el siguiente: El
primer método: use $ emit en el componente secundario para desencadenar un evento en el componente principal, y el componente principal escucha este evento

// 父组件
<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')
	}
}

El segundo método es llamar al componente principal directamente en el componente secundario a través de este. $ 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()
	}
}

El tercer componente principal pasa el método al componente secundario y llama a este método directamente en el componente secundario.

// 父组件
<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()
	}
}

Consulte este artículo para conocer el método de llamar al componente principal mediante el componente secundario de Vue . Varios usos pueden tener una eficiencia diferente. Si desea estudiar en profundidad, continúe buscando información detallada en Internet.

Supongo que te gusta

Origin blog.csdn.net/weixin_43908123/article/details/108284021
Recomendado
Clasificación