Vue3 子传父 暴露数据 defineExpose

简介: Vue3 子传父 暴露数据 defineExpose

defineExpose 属性:用于将子组件中的数据和方法,暴露给父组件,父组件再配合 ref 属性使用。

语法格式

// 子组件:暴露数据和方法
defineExpose({ 数据, 数据, 方法 });
 
// 父组件:使用数据和方法
ref名称.value.数据
ref名称.value.方法()

基础使用

一、子组件:创建 Child 子组件,通过 defineExpose 暴露数据和方法。

<template>
  <h3>我是 Child 组件</h3>
  <p>{{ info.name }} : {{ info.age }}</p>
</template>
 
<script setup>
import { reactive } from "vue";
let info = reactive({ name: "张三", age: 20 });
const isChild = () => {
  console.log("我是子组件");
};
// 暴露 info 数据和 isChild 方法
defineExpose({ info, isChild });
</script>

二、父组件:给 Child 组件标签绑定 ref 属性,使用数据和方法。

<template>
  <h3>首页</h3>
  <button @click="edit">父组件的按钮</button>
  <hr />
  <Child ref="content"></Child>
</template>
 
<script setup>
import Child from '../components/Child.vue';
import { onMounted, ref } from 'vue';
// 获取 Child 组件实例对象
let content = ref();
 
console.log("setup中使用:", content.value); // undefined
 
onMounted(() => {
  console.log("挂载后使用:", content.value.info);
})
 
const edit = () => {
  // 执行子组件中的 isChild 方法
  content.value.isChild();
  // 修改子组件中的 age 数据
  content.value.info.age++;
  console.log(content.value.info);
}
</script>

:子组件加载完毕后,才能使用数据和方法。所以不能直接在 setup 中使用。

最终效果:


相关文章
|
4天前
|
JSON 数据可视化 数据库
vue3+threejs+koa可视化项目——实现登录注册(第三步)
vue3+threejs+koa可视化项目——实现登录注册(第三步)
23 5
|
19天前
|
JavaScript 前端开发 数据安全/隐私保护
Vue3——如何实现页面访问拦截
Vue3——如何实现页面访问拦截
|
4天前
|
JavaScript 数据可视化 算法
vue3+threejs可视化项目——搭建vue3+ts+antd路由布局(第一步)
vue3+threejs可视化项目——搭建vue3+ts+antd路由布局(第一步)
22 6
|
4天前
|
监控 JavaScript
Vue中的数据变化监控与响应——深入理解Watchers
Vue中的数据变化监控与响应——深入理解Watchers
|
4天前
|
JSON 数据可视化 前端开发
vue3+threejs+koa可视化项目——模型文件上传(第四步)
vue3+threejs+koa可视化项目——模型文件上传(第四步)
15 7
|
12天前
|
JavaScript 算法 前端开发
vue3和vue2的区别都有哪些
【4月更文挑战第15天】Vue3与Vue2在响应式系统(Proxy vs. Object.defineProperty)、组件模块化(Composition API vs. Options API)、数据变化检测(Reactive API vs. $watch)、虚拟DOM算法(基于迭代 vs. 基于递归)及Tree-Shaking支持上存在显著差异。Vue3的改进带来了更好的性能和灵活性,适合追求新技术的项目。Vue2则因其成熟稳定,适合维护大型项目。选择版本需根据项目需求、团队情况和技术追求来决定。
13 0
|
13天前
|
JavaScript
vue3+vite项目配置ESlint
vue3+vite项目配置ESlint
15 0
|
13天前
乾坤子应用配置(vue3+vite)
乾坤子应用配置(vue3+vite)
31 0
vue3中使用router路由实现跳转传参
vue3中使用router路由实现跳转传参
|
19天前
|
存储 JavaScript 搜索推荐
vue如何实现登录数据的持久化
vue如何实现登录数据的持久化