vue3.x setup语法与vue2.x的区别

本文介绍了Vue3.x的主要变化,包括新的生命周期函数、script部分的选项式API整合至setup(),以及使用ref和reactive实现响应式编程。同时,Vue3.12允许组件模板有多个并列根元素。
摘要由CSDN通过智能技术生成

最新的vue版本相对于vue2.x已经大改,初始化项目就会发现有所不同,导致本人刚开始还不习惯vue3.x的语法,仍旧用vue2.x语法糖发现用不了,这才来总结下vue3.x中script部分的语法更新的点。

1.生命周期的不同

在vue2中,生命周期函数名如下:

beforeCreate():此时data 和 methods 中的数据还没有初始化。
created():数据已经生成,但是还没挂载到DOM之上。
beforeMount():模板渲染之前,此时模板已经在内存生成但未渲染到页面。
mounted():数据挂载到DOM上并进行渲染到页面中去了。
beforeUpdate():data数据已更新,但尚未渲染到页面上去,是未同步状态。
updated():DOM更新,页面渲染更新为和data中值同步。
beforeDestroy(): vue实例销毁前。
destroyed(): vue实例已经销毁。

而在vue3.x中,生命周期函数更新成为如下:

setup() :开始创建组件之前,在beforeCreate和created之前执行。创建的是data和method
onBeforeMount() : 组件挂载到节点上之前执行的函数。
onMounted() : 组件挂载完成后执行的函数。
onBeforeUpdate(): 组件更新之前执行的函数。
onUpdated(): 组件更新完成之后执行的函数。
onBeforeUnmount(): 组件卸载之前执行的函数。
onUnmounted(): 组件卸载完成后执行的函数
onActivated(): 被包含在中的组件,会多出两个生命周期钩子函数。被激活时执行。
onDeactivated(): 比如从 A 组件,切换到 B 组件,A 组件消失时执行。
onErrorCaptured(): 当捕获一个来自子孙组件的异常时激活钩子函数。

写法上:vue2定义生命周期函数是

mounted() {
   
}

vue3写法有点react化了:

onMounted(() => {

})

2.script标签内语法改变

原本vue2中的语法:

export default {
  name: "component",
  data() {
    return {
    }
    },
  methods: {

    },
  computed: {
  
   },
   watch:{
   
   }
   ......
}

这种老的语法被称为选项式API语法就是说data、method、computed分开;但是到现在最新的vue3.12中,这种语法统一写在setup()中(setup是生命周期最先执行的内容):

setup({
//data数据部分
let data1 = "xxx"
let data2 = "yyy"

//method方法部分如下写法
function func1() {
//执行逻辑...
//不要习惯性在里面写this.data1 = xxx来改变数据,this在vue3已经失效
data1 = "zzz" //更新完成
}
function func2() {
//执行逻辑...
}

//最后统一返回暴露给DOM使用
return {data1,data2,func1,func2}
})

都是这种写法又存在问题——没有任何响应式,数据data1不会及时通过method事件更新到template上,vue2是通过this直接数据同步渲染的。

所以vue3应用了ref、reactive
像下面这样通过ref来定义变量,这个变量就变成响应式的了;reactive和ref区别在于其只能定义复合结构如数组对象等的响应式变量。

<script setup>
import {ref} from "vue";

let menu = ref("菜单111")

function test(){
  menu.value = "菜单222"
}
</script>

3.vue3.12不再限制vue组件中template为单一根,而是可以为多个并列的根:

//vue2
<template>
<div>
...
...
</div>
</template>

//vue3
<template>
<div>...</div>
<div>...</div>
<div>...</div>
</template>

先列举这些,后续再更新其他地方的区别…

  • 10
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值