O componente pai vue passa valores para o componente filho, e o componente filho chama o método do componente pai

O método mais básico para o componente pai passar o valor para o componente filho é o seguinte: o
componente filho o recebe por meio de 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)
	}
}

O segundo método é definir diretamente o valor no componente filho por meio disso. $ 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)
	}
}

O método para o componente filho chamar o componente pai é o seguinte: O
primeiro método: use $ emit no componente filho para acionar um evento para o componente pai, e o componente pai escuta 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')
	}
}

O segundo método é chamar o componente pai diretamente no componente filho por meio deste. $ 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()
	}
}

O terceiro componente pai passa o método para o componente filho e chama este método diretamente no componente filho

// 父组件
<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 artigo para obter o método de chamar o componente pai pelo componente filho do Vue . Vários usos podem ter eficiência diferente. Se você deseja estudar a fundo, continue a encontrar informações detalhadas na Internet

Acho que você gosta

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