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

vue3学习总结1

一.vue3与vue2相比带来哪些变化?

a.性能的提升(包括打包大小减少,初次渲染的速度加快,更新渲染速度加快,内存减少)

b.源码的升级(响应式的原理发生了变化,由原来的defineProperty变成了Proxy;重写虚拟DOM的实现和Tree-Shaking )

拓展:Tree-Shaking:用于描述移除js上下文中未引用的代码行为的术语。webpack支持Tree-Shaking。

c.拥抱TypeScript(vue3可以更好的支持TypeScript)

d.新特性:

  • Composltion API(组合API)

  1. setup配置

  1. ref与reactive

  1. watch与watchEffect

  1. provide与inject

  • 新的内置组件

  1. Fragment

  1. Teleport

  1. Suspense

  • 其他改变

  1. 新的生命周期钩子

  1. data选项应始终被声明为一个函数

  1. 移除keyCode支持作为v-on的修饰符

二.vue3中的setup

首先:setup是vue3的一个新的配置项,值为一个函数。它的作用相当于是代替了vue2中的data,computed,method等等。其次它的返回值有两种除了返回一个对象外还可以返回一个渲染函数。

不过需要注意的一点是:setup不能是一个async函数,因为返回值不再是return的对象,而是promise,模板看不到return对象中的属性。

三.setup中的两个注意点:

  • setup的执行时机

  • 在beforeCreate之前执行一次,this是undefined

  • setup的参数

  • props:值为对象,包含:组件外部传递过来,且组件内部声明接受了属性。

  • context:上下文对象

  • attrs:值为对象,包含:组件外部传递过来但没有在props配置中声明的属性,相当于this.$attrs

  • slots:收到的插槽内容,相当于this.$slots

  • emit:触发自定义事件函数,相当于this.$emit

例子如下:

子组件Demo.vue:

<template><div style="text-center: left"><h1>个人信息</h1><h2>姓名:{{ person.name }}</h2><h2>年龄:{{ person.age }}</h2><h2>传递信息:{{ msg }}</h2><button @click='test'>测试触发一下Demo组件的hello事件</button></div>
</template>
<script>
import { reactive } from "vue";
export default {name: "Demo",props:['msg','school'],emits:['hello'],// beforeCreate() {//   console.log("--------beforeCreate--------");// },setup( props,context) {console.log("-------setup--------");//setup早于beforeCreate执行console.log('-------setup------',props);console.log('-------setup------',context);console.log('-------setup------',context.attrs);//相当于vue2中的$attrsconsole.log('-------setup------',context.emit);//触发自定义事件console.log('-------setup------',context.slots);//插槽let person = reactive({name: "张三",age: 18,});//方法function test() {context.emit('hello',666)}//返回一个对象return {person,test};},
};
</script>

父组件App.vue

<template><Demo @hello="showHelloMsg" msg="你好啊" school="尚硅谷"><template v-slot:qwe><span>操作与系统</span></template><template v-slot:asd><span>马原</span></template></Demo>
</template>
<script>
import Demo from "./components/Demo.vue";
export default {name: "App",components: {Demo,},setup() {function showHelloMsg(value) {alert(`你好啊,你触发了hello事件,我收到的参数时${value}!`);}return{showHelloMsg}},
};
</script>

http://www.lryc.cn/news/12605.html

相关文章:

  • SpringBoot统一功能处理
  • 2022年3月电子学会Python等级考试试卷(五级)答案解析
  • 【C++】智能指针
  • Seata架构篇 - AT模式
  • 加油站会员管理小程序实战开发教程12
  • 用腾讯云同步Obsidian笔记
  • 浅析C++指针与引用,栈传递的关系
  • 图解LeetCode——剑指 Offer 10- II. 青蛙跳台阶问题
  • 【Linux】用户分类+权限管理+umask+粘滞位说明
  • 【干货】如何打造HR无法拒绝的简历?测试开发大牛带手把手你写简历!
  • nodejs学习-4:nodejs连接mongodb和相关操作
  • 【博客629】Linux DNS解析原理与配置
  • 【CSP】202212-2 训练计划
  • java基础学习 day42(继承中构造方法的访问特点,this、super的使用总结)
  • 生物医药多组学与生物信息方法介绍
  • 3|物联网控制|计算机控制-刘川来胡乃平版|第2章:计算机控制系统中的检测设备和执行机构-2.2过程控制中常用的执行器|课堂笔记|ppt
  • 【进阶篇】线程的硬件基础
  • 关于 ISP Tuning的学习,分享几点看法
  • RocketMQ源码阅读
  • 重磅 | 小O软件新品【鲸鱼地图】发布
  • 软考高级信息系统项目管理师系列之二十五:项目合同管理
  • 测试开发之Django实战示例 第十三章 上线
  • python实战应用讲解-【语法基础篇】Python中的数值类型(附示例代码)
  • Git常用命令以及如何在IDEA中使用Git
  • 音乐播放器-- 以及数据库数据存储
  • [JAVA安全]Spring Messaging之CVE-2018-1270
  • CAN通信笔记-位时间、Tq及采样点同步
  • 玩转 Kubernetes 配置管理:ConfigMap 和 Secret 实战演示
  • Kubernetes
  • 从零开始 verilog 以太网交换机(三)MAC发送控制器的设计与实现