首页 > web前端 > Vue.js > 正文

vue3 setup语法糖如何使用

王林
发布: 2023-05-10 11:43:05
转载
2123人浏览过

    1.setup语法糖简介

    直接在script标签中添加setup属性就可以直接使用setup语法糖了。

    使用setup语法糖后,不用写setup函数;组件只需要引入不需要注册;属性和方法也不需要再返回,可以直接在template模板中使用

    	<template>
    		<my-component @click="func" :numb="numb"></my-component>
    	</template>
    	<script lang="ts" setup>
    		import {ref} from 'vue';
    		import myComponent from '@/component/myComponent.vue';
    		//此时注册的变量或方法可以直接在template中使用而不需要导出
    		const numb = ref(0);
    		let func = ()=>{
    			numb.value++;
    		}
    	</script>
    登录后复制

    2.setup语法糖中新增的api

    • defineProps:子组件接收父组件中传来的props

    • defineEmits:子组件调用父组件中的方法

    • defineExpose:子组件暴露属性,可以在父组件中拿到

      立即学习前端免费学习笔记(深入)”;

    2.1defineProps

    父组件代码

    	<template>
    		<my-component @click="func" :numb="numb"></my-component>
    	</template>
    	<script lang="ts" setup>
    		import {ref} from 'vue';
    		import myComponent from '@/components/myComponent.vue';
    		const numb = ref(0);
    		let func = ()=>{
    			numb.value++;
    		}
    	</script>
    登录后复制

    子组件代码

    法语写作助手
    法语写作助手

    法语助手旗下的AI智能写作平台,支持语法、拼写自动纠错,一键改写、润色你的法语作文。

    法语写作助手 31
    查看详情 法语写作助手
    	<template>
    		<div>{{numb}}</div>
    	</template>
    	<script lang="ts" setup>
    		import {defineProps} from 'vue';
    		defineProps({
    			numb:{
    				type:Number,
    				default:NaN
    			}
    		})
    	</script>
    登录后复制

    2.2defineEmits

    子组件代码

    	<template>
    		<div>{{numb}}</div>
    		<button @click="onClickButton">数值加1</button>
    	</template>
    	<script lang="ts" setup>
    		import {defineProps,defineEmits} from 'vue';
    		defineProps({
    			numb:{
    				type:Number,
    				default:NaN
    			}
    		})
    		const emit = defineEmits(['addNumb']);
    		const onClickButton = ()=>{
    			//emit(父组件中的自定义方法,参数一,参数二,...)
    			emit("addNumb");
    		}
    	</script>
    登录后复制

    父组件代码

    	<template>
    		<my-component @addNumb="func" :numb="numb"></my-component>
    	</template>
    	<script lang="ts" setup>
    		import {ref} from 'vue';
    		import myComponent from '@/components/myComponent.vue';
    		const numb = ref(0);
    		let func = ()=>{
    			numb.value++;
    		}
    	</script>
    登录后复制

    2.3defineExpose

    子组件代码

    	<template>
    		<div>子组件中的值{{numb}}</div>
    		<button @click="onClickButton">数值加1</button>
    	</template>
    	<script lang="ts" setup>
    		import {ref,defineExpose} from 'vue';
    		let numb = ref(0);
    		function onClickButton(){
    			numb.value++;	
    		}
    		//暴露出子组件中的属性
    		defineExpose({
    			numb 
    		})
    	</script>
    登录后复制

    父组件代码

    	<template>
    		<my-comp ref="myComponent"></my-comp>
    		<button @click="onClickButton">获取子组件中暴露的值</button>
    	</template>
    	<script lang="ts" setup>
    		import {ref} from 'vue';
    		import myComp from '@/components/myComponent.vue';
    		//注册ref,获取组件
    		const myComponent = ref();
    		function onClickButton(){
    			//在组件的value属性中获取暴露的值
    			console.log(myComponent.value.numb)  //0
    		}
    		//注意:在生命周期中使用或事件中使用都可以获取到值,
    		//但在setup中立即使用为undefined
    		console.log(myComponent.value.numb)  //undefined
    		const init = ()=>{
    			console.log(myComponent.value.numb)  //undefined
    		}
    		init()
    		onMounted(()=>{
    			console.log(myComponent.value.numb)  //0
    		})
    	</script>
    登录后复制

    补充:与普通的script一起使用

    <script setup>可以和普通的<script>一起使用。普通的<script>在有这些需要的情况下或许会被使用到。

    • 无法在<script setup>声明的选项,例如inheritAttrs或通过插件启用的自定义的选

    • 声明命名导出

    • 运行副作用或者创建只需要执行一次的对象

    <script>
        // 普通 <script>, 在模块范围下执行(只执行一次)
        runSideEffectOnce()
        
        // 声明额外的选项
        export default {
          inheritAttrs: false,
          customOptions: {}
        }
    </script>
    
    <script setup>
        // 在 setup() 作用域中执行 (对每个实例皆如此)
    </script>
    登录后复制

    以上就是vue3 setup语法糖如何使用的详细内容,更多请关注php中文网其它相关文章!

    相关标签:
    最佳 Windows 性能的顶级免费优化软件
    最佳 Windows 性能的顶级免费优化软件

    每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

    下载
    来源:亿速云网
    本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
    最新问题
    开源免费商场系统广告
    热门教程
    更多>
    最新下载
    更多>
    网站特效
    网站源码
    网站素材
    前端模板
    关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
    php中文网:公益在线php培训,帮助PHP学习者快速成长!
    关注服务号 技术交流群
    PHP中文网订阅号
    每天精选资源文章推送
    PHP中文网APP
    随时随地碎片化学习

    Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号