当前位置: 首页 > news >正文

【Vue3】06-利用setup编写vue(1)

其它篇章:
1.【Vue3】01-创建Vue3工程
2.【Vue3】02-Vue3工程目录分析
3.【Vue3】03-编写app组件——src
4.【Vue3】04-编写vue实现一个简单效果
5.【Vue3】05-Options API和Composition API的区别
合集篇:
1.【Vue3】创建并运行一个简易的Vue3项目

【Vue3】06-利用setup编写vue(1)

    • setup
      • setup概述
        • 理解概念
          • 概念:
          • 优点:
        • 实操验证:基本用法
          • 步骤一:创建`setup`,删除`data()、methods`
          • 步骤二:添加数据
          • 步骤三:添加方法
          • 步骤四:验证
        • 完整代码:
          • App.vue:
          • Person.vue:

setup

setup概述

理解概念
概念:
  • 在Vue3中,setup函数是一个全新的选项,用于替代Vue2中的beforeCreatecreated钩子函数。
  • 它是在 组件创建 时执行的一个函数,主要用于 声明 组件的状态和行为,使得组件更加清晰和易于维护。
优点:

在vue3中,相对vue2有一个优点,它可以在直接连写几个<Person/>(引入vue组件,这里用Person举例)。
举例:代码如下。

<template><Person/><Person/><Person/><Person/><Person/>
</template>

验证:最终效果如下,可以看到有很多组件,vue2就不能这样写。
在这里插入图片描述

实操验证:基本用法

原始代码:

<template><div class="person"><h1>姓名:{{name}}</h1><h1>年龄:{{age}}</h1><button @click="show">查看生日</button></div>
</template><script lang="ts">export default{name:"person",data() {return{name:'zhangsan',age:20,birth:'2005.1.1'}            },methods:{show(){alert(this.birth)}}}
</script><style>.person {background-color: rgb(200, 255, 0);box-shadow: 0 0 10px;border-radius: 20px;padding: 20px;}
</style>
  • 在此基础上完成对setup的实操。
步骤一:创建setup,删除data()、methods

对script标签内容进行修改,在<script>export中添加setup(){},代码如下:

<script lang="ts">export default{name:"person",setup(){//之后在这添加内容}}
</script>
步骤二:添加数据
  1. setup()里添加数据,代替之前的data()(vue2写法)的内容,代码如下:

    <script lang="ts">export default{name:"person",setup(){let name = 'zhangsan';let age = 20;let birth = '2025.1.1';}}
    </script>
    

注意:这里添加的name、age、birth的数据都不是响应式的,在后面添加函数时,修改后的数据,是不会覆盖开始就显示的数据的。

  1. 修改过后,发现前面对数据的引用飘红了:
    在这里插入图片描述
    这是因为没有加return,在setup中添加return {n:name,a:age},再将{{ }}的内容分别改为n,a就行了:
    在这里插入图片描述

  2. return中的内容,冒号左边对应引用,冒号对应setup内的定义,但我们一般把这两部分设置为一样的,比如:{name:name,age:age},这样更容易分辨。而两部分一样的话,就可以简写为这样的形式:{name,age}
    添加数据后,最终的代码如下:

    <template><div class="person"><h1>姓名:{{name}}</h1><h1>年龄:{{age}}</h1></div>
    </template><script lang="ts">export default{name:"person",setup(){let name = 'zhangsan';let age = 20;let birth = '2025.1.1';return {name,age}}}
    </script>
    
步骤三:添加方法

接下来在setup里添加方法。

注意

  1. 记住要添加在return之前,不然到return就结束了,后面的方法就没用了。
  2. 不要在setup里用this,this在setup函数里是undefined。要修改变量比如name,直接name='???'就可以了。
  1. 定义一个函数,代码如下:

    function show(){//之后在这添加内容
    }
    
  2. 在函数中添加内容,完成指定功能,并将其添加到return中,代码如下:

    function show(){alert(birth)
    }
    return {name,age,show}
    
  3. <template>里的容器里添加按钮,最终完整代码如下:

<template><div class="person"><h1>姓名:{{name}}</h1><h1>年龄:{{age}}</h1><button @click="show">查看生日</button></div>
</template><script lang="ts">export default{name:"person",setup(){let name = 'zhangsan';let age = 20;let birth = '2025.1.1';function show(){alert(birth)}return {name,age,show}}}
</script>
<style>.person {background-color: rgb(200, 255, 0);box-shadow: 0 0 10px;border-radius: 20px;padding: 20px;}
</style>
步骤四:验证

终端输入npm run dev启动服务器,浏览器访问,并点击“查看生日”,的到以下界面:
在这里插入图片描述

完整代码:
App.vue:
<template><Person/><Person/><Person/><Person/><Person/>
</template><script lang="ts">import Person from './components/Person.vue';export default{name:"app",components:{Person}}
</script>
<style>.app {background-color: aqua;box-shadow: 0 0 10px;border-radius: 20px;padding: 20px;}
</style>
Person.vue:
<template><div class="person"><h1>姓名:{{name}}</h1><h1>年龄:{{age}}</h1><button @click="show">查看生日</button></div>
</template><script lang="ts">export default{name:"person",setup(){let name = 'zhangsan';let age = 20;let birth = '2025.1.1';function show(){alert(birth)}return {name,age,show}}}
</script>
<style>.person {background-color: rgb(200, 255, 0);box-shadow: 0 0 10px;border-radius: 20px;padding: 20px;}
</style>

vue工程的基本创建与运行方法可参考以下篇章:

其它篇章:
1.【Vue3】01-创建Vue3工程
2.【Vue3】02-Vue3工程目录分析
3.【Vue3】03-编写app组件——src
4.【Vue3】04-编写vue实现一个简单效果
5.【Vue3】05-Options API和Composition API的区别
合集篇:
1.【Vue3】创建并运行一个简易的Vue3项目


文章转载自:

http://7lXlquwd.Lszjq.cn
http://WcfukaHD.Lszjq.cn
http://Hs6KzVdg.Lszjq.cn
http://pF3MNWvh.Lszjq.cn
http://izh0rzXA.Lszjq.cn
http://eFXOB7wv.Lszjq.cn
http://JSxqSuc0.Lszjq.cn
http://v8GaU52k.Lszjq.cn
http://8VJ481kt.Lszjq.cn
http://F7uewkAN.Lszjq.cn
http://VFQUUZt3.Lszjq.cn
http://rbNMGCVX.Lszjq.cn
http://1pxqQuIq.Lszjq.cn
http://WHyZ6duS.Lszjq.cn
http://eT5u6JO7.Lszjq.cn
http://GxZGOcgX.Lszjq.cn
http://Lv5dSEuN.Lszjq.cn
http://T3TGiiFB.Lszjq.cn
http://vsELAFyB.Lszjq.cn
http://IHE0Yosn.Lszjq.cn
http://ogovZLyN.Lszjq.cn
http://oXSFwXLH.Lszjq.cn
http://LLt0dHB7.Lszjq.cn
http://PAH1A5PQ.Lszjq.cn
http://gSKJ9yNg.Lszjq.cn
http://Ii0Z64uQ.Lszjq.cn
http://CtkSLJ7a.Lszjq.cn
http://AG0G1YFm.Lszjq.cn
http://DJ33eNd9.Lszjq.cn
http://yQ5QLKtn.Lszjq.cn
http://www.dtcms.com/a/380745.html

相关文章:

  • 单序列双指针
  • Linux中进程和线程常用的API详解
  • 【AI论文】多模态大型语言模型的视觉表征对齐
  • php学习(第四天)
  • Vue中使用keep-alive实现页面前进刷新、后退缓存的完整方案
  • Jenkins运维之路(Jenkins流水线改造Day02-1-容器项目)
  • Netty从0到1系列之Netty逻辑架构【上】
  • com.google.common.cache实现本地缓存
  • LeetCode 面试经典 150 题之最后一个单词的长度:逆向遍历高效解法
  • 详解JWT
  • Spring Boot 分布式事务常见问题:Seata、XA 与本地消息表对比
  • 如何在Hugging Face中下载全部文件?
  • AI之VideoTool:AI-Video-Transcriber​​​​​​​的简介、安装和使用方法、案例应用之详细攻略
  • Qt6实现了一个打地鼠小游戏,支持AI自动打地鼠
  • Chapter5—抽象工厂模式
  • WebSocket连接状态监控与自动重连实现
  • 目标计数论文阅读(1)Class-Agnostic Counting
  • LVGL移植2048小游戏全攻略
  • 大模型系列——ChatBI重构企业知识库
  • DEM(数字高程模型)详解
  • 软考 系统架构设计师系列知识点之杂项集萃(144)
  • R语言生物群落(生态)数据统计分析与绘图实践技术应用
  • DPO 深度解析:从公式到工程,从偏好数据到可复用训练管线
  • 今天继续学习Linux系统中shell脚本
  • 开源端到端训练多模态大模型LLaVA 深度拆解
  • 周志华《机器学习导论》第10章 降维与度量学习
  • PyQt置顶窗口
  • 基于图像和激光的多模态点云融合与视觉定位
  • 企业数据防护利器:Curtain e-locker 支持NCA合规
  • 【Vue2 ✨】Vue2 入门之旅 · 进阶篇(九):Vue2 性能优化