Skip to content

ref&$parent

ref

  • 获取真实的 dom 节点
  • 获取到子组件实例 VC
  • 组件内部数据对外是关闭的,别人不能访问;如果想要让外部访问需要,通过 defineExpose 方法对外暴露。

$parent

  • 可以在子组件内获取到父组件的实例

案例

  • 父组件
vue
<template>
	<div class="father">
		<div class="data">
			<p>我是父组件</p>
			<p>money:{{ money }}</p>
			<button @click="handler">操作子组件数据</button>
		</div>
		<div class="children">
			<Child1 ref="son">
			</Child1>
		</div>
	</div>
</template>
ts
<script setup lang="ts">
import Child1 from "./child1.vue";
import { ref } from "vue";
const money = ref(1000);
//获取子组件 变量名 必须等于子组件ref的值
let son = ref();
const handler = () => {
	money.value += 10;
	son.value.money -= 10;
	son.value.fly()
};
//组件内部数据对外是关闭的,别人不能访问;如果想要让外部访问需要,通过defineExpose方法对外暴露
defineExpose({
	money
})
</script>
  • 子组件
vue
<template>
	<div class="child1">
		<p>我是子组件1</p>
		<p>money:{{ money }}</p>
		<button @click="handler($parent)">操作父组件数据</button>
	</div>
</template>
ts
<script setup lang="ts">
import { ref } from "vue";
const money = ref(150);
const fly = ()=>{
	console.log("fly起来");
}
const handler = ($parent)=>{
	money.value += 10;
	$parent.money -=10;
}
//组件内部数据对外是关闭的,别人不能访问;如果想要让外部访问需要,通过defineExpose方法对外暴露
defineExpose({
	money,
	fly
})
</script>