首页 > 其他分享 >vue3的入门--setup

vue3的入门--setup

时间:2024-05-15 19:09:27浏览次数:19  
标签:function vue name -- age let vue3 setup

代码量:200行以上

博客量:1

时间:2h

 

  • vue2中的data和methods可以与setup并列写,但是:
  • data和methods可以利用this调用setup中的数据
  • 而,setup中,不能调用data和methods中的数据
<!--Person.vue-->
<template>
    <div class="person">
        <h2>姓名:{{name}}</h2>
        <h2>年龄:{{age}}</h2>
        <button @click="changeName">修改名字</button>
        <button @click="changeAge">修改年龄</button>
        <button @click="showTel">查看联系方式</button>
    </div>
</template>

<script lang='ts'>
export default{
    name:'Person',
    setup(){
        //数据部分
        let name = '张三'
        let age = 18
        let tel = '13383619197'
        //函数部分
        function changeName(){
            name = 'zhang-san'
        }
        function changeAge(){
            age+=1
        }
        function showTel(){
            alert(tel)
        }
        return {name,age,changeName,changeAge,showTel}
        //return ()=> '哈哈' setup也可以返回一个渲染函数
    }
}
</script>

<style scoped>
.person{
    background-color: skyblue;
    box-shadow: 0 0 10px;
    border-radius: 10px;
    padding:20px;
}
button{
    margin: 0 5px;
}
</style>

setup的语法糖

<!--常用方式-->
<script lang='ts'>
export default{
    name:'Person',
    setup(){
        let a = 666
        return {a}
    }
}
</script>



<!--简便用法-->
<script lang='ts'>
export default{
    name:'Person',
}
</script>

<script lang='ts' setup>
    let a = 666
</script>


<!--安装插件后还可以简化-->
npm i vite-plugin-vue-setup-extend -D
<!--然后在vite.config.ts引入-->
import { fileURLToPath, URL } from 'node:url'

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import VueSetupExtend from 'vite-plugin-vue-setup-extend'

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [
    vue(),
    VueSetupExtend(),
  ],
  resolve: {
    alias: {
      '@': fileURLToPath(new URL('./src', import.meta.url))
    }
  }
})


<!--可简化为:-->
<script lang='ts' setup name='Person234'>
    let a = 666
</script>
  • 修改后的Person.vue
<template>
    <div class="person">
        <h2>姓名:{{name}}</h2>
        <h2>年龄:{{age}}</h2>
        <button @click="changeName">修改名字</button>
        <button @click="changeAge">修改年龄</button>
        <button @click="showTel">查看联系方式</button>
    </div>
</template>

<script lang="ts" name="Person234" setup>
        //数据部分
        let name = '张三'
        let age = 18
        let tel = '13383619197'
        //函数部分
        function changeName(){
            name = 'zhang-san'
        }
        function changeAge(){
            age+=1
        }
        function showTel(){
            alert(tel)
        }
</script>

<style scoped>
.person{
    background-color: skyblue;
    box-shadow: 0 0 10px;
    border-radius: 10px;
    padding:20px;
}
button{
    margin: 0 5px;
}
</style>

标签:function,vue,name,--,age,let,vue3,setup
From: https://www.cnblogs.com/muzhaodi/p/18194531

相关文章

  • 蓝桥杯-航班时间(简单写法+sscanf的应用)
    小h前往美国参加了蓝桥杯国际赛。小h的女朋友发现小h上午十点出发,上午十二点到达美国,于是感叹到“现在飞机飞得真快,两小时就能到美国了”。小h对超音速飞行感到十分恐惧。仔细观察后发现飞机的起降时间都是当地时间。由于北京和美国东部有12小时时差,故飞机总共需要......
  • E. We Need More Bosses
    原题链接题解1.已知如果两个点之间有两条边不重合的路径,那么这两个点就在一个边强连通分量里,所以我们可以把处于同一个边强连通分量的点缩起来在这里,我忘记了怎么求边强连通分量,所以我再提醒一下自己已知树结构是不存在强连通分量的,它的特性是深度大的节点只有一条回到深度小......
  • Spring Boot项目,LocalDateTime参数在不同传参方式下的报错
    背景很基础的问题,只是项目中有遇到,简单记录一下两个类似的请求,一个为GET请求,普通传参方式,一个为POST请求,JSON传参,用@RequestBody接受,两者的传参是同一个对象,其中有个参数updateTime,类型为LocalDateTimeGET请求正常,POST请求会报400原因很基础的问题GET请求的参数通常通过URL......
  • webase go-sdk 简单使用
    本流程在test目录下,其中用到的 solc-0.4.25和abigen工具网上教程都比较详细,就暂时不展开聊,今天就大概描述流程。1.将目录下的test.sol文件编译pragmasolidity^0.4.25;import"./Table.sol";contracttest{stringconstantTABLE_NAME="test2";......
  • Selenium4自动化测试7--控件获取数据--radio单选框、select下拉框选择、iframe
    7-radio单选框 importtimefromseleniumimportwebdriverfromselenium.webdriver.common.byimportBy#定义一个driver的变量,用来接收实例化后的浏览器#指定浏览器的位置,解决浏览器驱动和浏览器版本不匹配的问题chrome_location=r'D:\pythonProject2023\Seleni......
  • 洛谷题单指南-动态规划3-P1220 关路灯
    原题链接:https://www.luogu.com.cn/problem/P1220题意解读:按坐标顺序排列1~n个路灯,每个路灯有不同的功耗,老张从位置c开始关灯,第一时间关掉c位置的灯,每次关掉一个灯之后,可以往右走、也可以往左走关下一个灯,老张速度是1m/s,求所有灯都关掉所消耗的最少功耗。解题思路:由题意分析,关......
  • 三原色及补色
    RGB和CMY互补关系按顺序来一一对应(一定要牢记);也就是说(C)青色是(R)红色的补色,(M)品红色是(G)绿色的补色,(Y)黄色是(B)蓝色的补色。这样就很好记了三原色其中的两种叠加生成另一种原色的补色:比如红➕绿=黄(蓝的补色);反之同理:青➕品=蓝(黄对应的原色),所以青色和品红色也是......
  • Mac电脑idea插件JRebel提示不可用
    现象:原因:常见如:https://jrebel.qekang.com/ 解决办法:降低IDEA>jrebel版本2022.4.1进入idea:打开Preferences-Plugins找到jrebel插件并卸载;到idea官方店下载:https://plugins.jetbrains.com/plugin/4441-jrebel-and-xrebel/versions/stable找到对应版本下载到本地后,打开......
  • 如何让Vmware虚拟机ubuntu20.04使用物理机(windows11)下的魔法能力(浏览器及命令行下载、
    ​首先点击VMware下的“编辑”》虚拟网络编辑器,得到如图所示画面。​​​​​如果没有VMnet0就到桌面上右键VMware图标选择属性,然后如图:兼容性>以管理员身份运行此程序。然后重新打开就有了。然后桥接模式不要选择自动设置,如何选择继续往下看。在主机中cmd命令行输入:syste......
  • .NET实现获取NTP服务器时间并同步(附带Windows系统启用NTP服务功能)
    对某个远程服务器启用和设置NTP服务(Windows系统)打开注册表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer将 Enabled 的值设置为 1,这将启用NTP服务器功能。防火墙开放UDP 123端口打开“服务”应用(可以在开始菜单搜索“服务......