首页 > 其他分享 >[Vue3] defineExpose要在方法声明定义以后使用

[Vue3] defineExpose要在方法声明定义以后使用

时间:2023-02-17 14:23:30浏览次数:97  
标签:vue const 定义 name Vue3 组件 ref defineExpose

[Vue3] defineExpose要在方法声明定义以后使用

Vue3中的setup默认是封闭的,如果要从子组件向父组件暴露属性和方法,需要用到defineExpose.

defineProps, defineEmits一样,这三个函数都是内置的,不需要import.

不过defineProps, defineEmits都会返回一个实例,而defineExpose是无返回值的.

const props = defineProps({})
const emit = defineEmits([])
defineExpose({})

defineExpose的使用

子组件Child.vue

<template>
	{{ name }}
</template>

<script setup>
import { ref } from 'vue'

const name = ref("Nicholas.")
const sayName = ()=>{
    console.log("my name is "+name.value)
}

defineExpose({
	name,
	sayName
});
</script>

父组件Father.vue

<template>
	<Child ref="child"></Child>
</template>

<script setup>
import { ref, onMounted } from 'vue'
const child = ref(null)
onMounted(()=>{
    console.log(child.value.name)	// "Nicholas"
    child.value.sayName()			// "my name is Nicholas"
})
</script>

总结

  1. 向外暴露的时候变量会自动解包,比如上面子组件的name:ref<String>暴露到父组件的时候自动变成了name:String.

  2. 注:defineExpose一定要在变量和方法声明定义之后再使用。

    不知道以后会不会有修改,不过在2023/02/17,如果defineExpose写在变量和函数前面,那么浏览器的控制台会输出很多警告,并且最终将该页面卡死。

屏幕截图 2023-02-17 140231

标签:vue,const,定义,name,Vue3,组件,ref,defineExpose
From: https://www.cnblogs.com/feixianxing/p/define-expose-used-after-the-method-declaration-defi

相关文章

  • vue2 - 自定义插件 使用插件,scoped
    1.自定义插件myPlugin.jsexportdefault{install(Vue){console.log("Vue.use()会调用此方法",Vue)}} 2.使用插件importVuefrom'vue'importAp......
  • 自定义HarmonyOS启动页组件
    启动页作为应用程序首次出现的页面,该页面提供一些预加载数据的提前获取,防止应用程序出现白屏等异常,如是否第一次访问应用程序并开启应用欢迎页;判断用户登录信息进行页面跳转......
  • vue2 - 局部过滤器 全局过滤器,自定义局部指令 自定义全局指令
    1.过滤器局部过滤器<!--使用一个过滤器,单个参数--><div>{{"levi"|filterTest1}}</div><!--使用一个过滤器,多个参数--><inputtype="text"v-bind:......
  • vue2和vue3的响应式区别
    vue响应式依赖的函数vue2vue2中依赖es5的Object.defineProperty属性,该方法可以在一个对象上定义一个新属性,或者修改一个对象的现有属性,并返回这个对象。监听的是对象......
  • VSCode Markdown preview enhanced 配置中文字体, 自定义css的方法
    在Ctrl+Shift+P命令菜单中选择CustomizeCSS这是我基于SolarizedLight的配置文件注意,只需要在系统中(我的是Win10)安装思源宋体CNMedium,在系统的字体当中找到它......
  • Vue3+vite项目在局域网内通过ip在手机端访问
    使用vite启动项目后,想在手机端访问项目,此时是访问不到的在网上查阅了相关内容,小结一下1.修改vite.confifg,js(未使用ts,使用的修改vite,config.ts)exportdefaultdefineCo......
  • vue3+vant中自定义隐藏DropdownMenu下拉菜单
    一、概述需求:当点击确定按钮时隐藏下拉菜单。主要使用的方法:ref标识当前组件van-dropdown-item,当点击确定按钮时通过getCurrentInstance来获取组件身上的属性方法。......
  • 差分隐私-问题和定义
    问题模型及定义注意:密码学方法保证的是计算过程的隐私性,差分隐私保证的是计算结果的隐私性。差分隐私的核心是保护个人数据的隐私,而不是保护群体数据的隐私。差分隐私问......
  • springboot自定义校验工具类
    参考:https://betheme.net/news/txtlist_i120686v.html?action=onClickhttps://www.ngui.cc/el/2571188.html?action=onClick一、原生注解在springboot中,我们可以使用ja......
  • PHP 之自定义模板解析
    一、解析列表1、效果图 2、示例代码<?phpinclude_once'parse.func.php';$data=array(array('scode'=>2,'link'=>'https://www.b......