首页 > 其他分享 >vue3:setup语法糖使用教程

vue3:setup语法糖使用教程

时间:2023-03-08 09:36:54浏览次数:45  
标签:教程 vue setup 组件 numb vue3 myComponent import ref

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>

setup语法糖中新增的api

  1. defineProps
  2. defineEmits
  3. defineExpose

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>
子组件代码
<template>
    <div>{{numb}}</div>
</template>
<script lang="ts" setup>
    import {defineProps} from 'vue';
    defineProps({
        numb:{
            type:Number,
            default:NaN
        }
    })
</script>

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>

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>

标签:教程,vue,setup,组件,numb,vue3,myComponent,import,ref
From: https://www.cnblogs.com/xpbb/p/17190769.html

相关文章

  • Tomcat安装及配置教程
     java环境的配置 1java环境的配置应该都学过吧,这里简单的讲一下。下载安装javaJDK,注意安装的路径,我们需要进行环境变量的配置。2安装完成以后,配置......
  • vue2与vue3不同点:opitons api 与cmposition api
    vue2:optionsapi采用的是命令式编程,而vue3组合式api采用的是函数式编程,两者存在很大的差异,vue3更灵活,难度也更大。script语法糖,vue3可以通过导入函数的方式来定义响应......
  • MySQL5.7主从复制教程
     MySQL5.7主从复制教程 ​简述:主从复制,是用来建立一个和主数据库完全一样的数据库环境,称为从数据库,主数据库一般是准实时的业务数据库、事务处理库,从库做查询库。......
  • Ubuntu18.04安装Docker完整教程
    1.更新软件源列表sudoaptupdate2.安装软件包依赖sudoaptinstallapt-transport-httpsca-certificatescurlsoftware-properties-common3.在系统中添加Docker的......
  • v-model 在vu2和vue3的使用
    首先看到v-model,大多数小伙伴都会想到“响应式”、“双向绑定”,v-model确实是实现了双向绑定数据,用过vue的人都比较熟悉。v-model是Vue内置的指令,vue2和vue3中的v-mod......
  • Ubuntu安装docker详细教程
    1.安装sudoapt-getupdate&&sudoapt-getinstall-yapt-transport-httpsca-certificatescurlsoftware-properties-common&&curl-fsSLhttps://download.dock......
  • 【WPS JS教程】判断单元格是否为空值
    functionisUndefined(){ if(Sheets.Item("Sheet1").Range("A1").Value2==undefined){ Sheets.Item("Sheet1").Range("A2").Value2="A1是空值" }else{ Sheets.Item("......
  • Git-简要教程
    和github连接安装git。之后所有命令全在gitbash中运行生成keyssh-keygen-ted25519-C"[email protected]"会生成一个私有key和public的key2.在你的用......
  • 从0搭建Vue3组件库(五): 如何使用Vite打包组件库
    本篇文章将介绍如何使用vite打包我们的组件库,同时告诉大家如何使用插件让打包后的文件自动生成声明文件(*.d.ts)打包配置vite专门提供了库模式的打包方式,配置其实非......
  • vite+vue3+ts 如何配置环境 以及如何配置开发环境和生产环境变量
    如何在vite项目中配置环境及环境变量首先需要创建环境文件,这里我只创建了两个环境:开发环境和生产环境;在根目录下创建.env.development文件,此文件为开发环境,......