Vue3.0基本语法简单整理(对比2.0语法)

如果现在想在vue-cli上使用vue3.0语法,首先你的cli版本必须为4,然后打开你的项目终端

vue add vue-next

这样我们就可以使用3.0语法了

先说一下3.0的setup

核心函数,它的执行时机是在beforeCreate之后和created之前,
很多代码都必须写在这个函数中,并且如果要在组件的template中使用,
那么就必须在setup中return出去,像data,computed,methods都要写在这里

一.2.0data

2.0定义变量是这样

 data() {
    return {
      msg:'你好',
    }
  },

3.0

import {reactive} from 'vue'
	 setup(){
	    const state = reactive({
	      msg2:'你好啊',
	    })
	  }
	  
reactive:接收一个普通对象然后返回该普通对象的响应式代理。等同于 2.x 的 Vue.observable()

也可以这样定义变量

import {ref} from 'vue'
const msg3 = ref('你好不好')

别忘了导出

 return {
      msg3,
      state
}

在template使用方法一样

{{msg}}
{{msg2}}
{{msg3}}

二.2.0methods,比如我们想更改msg的值

<button @click="changeMsg()">vue3.0(更改msg的值)</button>
<button @click="changeMsg1()">vue2.0(更改msg的值)</button>

2.0写方法

  methods: {
    changeMsg1(){
      this.msg = 'msg1被改了'
    }
  },

3.0写方法

import {reactive,ref,toRefs} from ‘vue’

setup(){
 const changeMsg =()=>{
      state.msg2 = 'msg2被改了'
      msg3.value ='msg3被改了'
    }
}
注:ref定义的变量,改变值要.value,而且在template中不用写.value

导出
return {
  msg3,
  // toRefs变为响应式
  ...toRefs(state),
  changeMsg,
}
注:state要被toRefs包裹,要不然页面不会发生变化

三.2.0computed,比如定义一个数字,点击+1

2.0写法

{{doubleNum}}

data() {
   return {
   num:1
}
},
computed: {
  doubleNum1(){
    return this.num *3
}

},

3.0写法

{{doubleNum}}

import {reactive,toRefs,computed} from 'vue'

setup(){
const state = reactive({
      num:1,
    })
 const doubleNum = computed(()=>{
      return state.num *2
    })
}
 return {
  // toRefs变为响应式
  ...toRefs(state),
  doubleNum
}

还有一种简便的写法

setup(){
const state = reactive({
  num:1,
  doubleNum:computed(()=>state.num *2)
  })
 } 
也不用导出doubleNum,因为我们导出了...toRefs(state)

四.2.0watch,点击数字+1监听值的改变

2.0写法

data() {
    return {
      num:1
    }
  },
 methods: {
    addNum(){
      this.num++
    }
  },
watch: {
num(newVal){
 console.log(newVal)
}
},

3.0写法

import {reactive,toRefs,watch} from 'vue'

setup(){
const state = reactive({
      num:1,
    })
const addNum = ()=>{
      state.num++
    }
watch(()=>state.num,(newValue,oldValue)=>{
    console.log(newValue)
    })
}
注:3.0还没发布deep属性
 return {
      // toRefs变为响应式
      ...toRefs(state),
      addNum,
}

五.生命周期,左边2.0,右边3.0

beforeCreate -> 使用 setup()
created -> 使用 setup()
beforeMount -> onBeforeMount
mounted -> onMounted
beforeUpdate -> onBeforeUpdate
updated -> onUpdated
beforeDestroy -> onBeforeUnmount
destroyed -> onUnmounted
errorCaptured -> onErrorCaptured

注:3.0使用的话也要导入

六.2.0props,父组件向子组件传递参数

创建一个children.vue子组件

import children from './children'

 components:{
    children
  }
components是一摸一样的,而且不用写在setup中

<children :msg="msg2"/>
传参方式也一样,但是接收参数不一样

2.0接收参数

props:{
    msg:{
    type:String,
    default(){
      return ''
    }
    }
  },
template使用
{{msg}}

3.0接收参数

import {reactive} from 'vue'
  props:{
    msg:{
    type:String,
    default(){
      return ''
    }
    }
  },
setup(props) {
    const state = reactive({
       myMsg:props.msg
    })
    return {
      ...state
    }
  }
//props中有一个值

template使用
{{myMsg}}

七.跨组件通信provide,inject

这个就直接说3.0怎么用了

import {provide} from 'vue'

setup(){
 provide('msg','你是一只小小小小鸟')
}

<children/>

children子组件

import {reactive,inject} from 'vue'

 setup(props) {
    const state = reactive({
      myMsg:inject('msg')
    })
    return {
      ...state
    }
  }
template中使用
{{myMsg}}

而且这种方式可以一直传递,孙组件也能使用这个值
  • 3
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Vue.js 3.02.0 之间有一些重大的变化和改进。以下是几个主要的区别: 1. 性能优化:Vue.js 3.0 在性能方面进行了优化。它使用了新的编译器,生成了更小、更快的代码,并减少了运行时的开销。新的响应式系统与 Proxy API 结合,比旧版中的 Object.defineProperty() 有更好的性能。 2. Composition API:Vue.js 3.0 引入了一种新的 API,即 Composition API,它使开发者可以更灵活地组织和重用组件逻辑。Composition API 基于函数式编程的思想,允许开发者根据功能而不是代码结构组织代码。这个 API 更适合大型项目和团队开发。 3. 新的组件模板语法Vue.js 3.0 引入了一些新的组件模板语法,使模板更易于阅读和编写。例如,引入了 v-model 的新写法,用于更清晰地表示双向数据绑定。此外,还有一些其他的语法改进,如新的条件渲染语法、新的 v-bind 缩写等。 4. TypeScript 支持:Vue.js 3.0 对 TypeScript 的支持更加友好。它提供了更好的类型推导和类型检查,并且在编码过程中会给出更准确的错误提示。 5. 更好的 Tree-shaking 支持:Vue.js 3.0 通过更好的 Tree-shaking 支持,使得发布的代码包更小。这是通过将内部代码分割成更小的块,并允许按需加载这些块来实现的,从而减少了项目的体积。 总的来说,Vue.js 3.0 在性能、开发体验和开发方式等方面都有所改进和提升,使得开发者能够更高效地开发和维护 Vue.js 应用程序。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值