[前端暴龙机,Vue2.x 进化 Vue3 ] Day25. Vue3 Composition API 使用(一)

Composition API 当中我们可以将响应式资料和相关业务逻辑结合到一起,是因为 Vue3 的 setup 方法

setup

  • setup 是 Vue3 使用 Composition API统一入口
  • 在 Vue3 中 beforecatecreatedsetup 方法本身给取代
  • Vue2.x 中,我们使用 this 来取得 Vue 实体的东西,但是在 setup我们不使用 this

生命周期

https://ithelp.ithome.com.tw/upload/images/20210820/201207226fl8jDf5xD.png
除了上面提到的 beforecatecreated 被取代掉了,其它的生命周期钩子,可以透过前面加上 "on" 来使用,如下
https://ithelp.ithome.com.tw/upload/images/20210820/201207222rFcQlBooY.jpg

如何使用

在 Vue3 中,我们会将生命周期钩子在 setup 里面来使用,如下

import {createApp,onMounted} from 'https://cdnjs.cloudflare.com/ajax/libs/vue/3.1.4/vue.esm-browser.min.js'
createApp({
    setup(){
        onMounted(()=>{
        
        })
    }
}).mount('#app');

computed 写法,会是透过直接宣告一个变数来使用 computed 而不是全部包在 computed 中,就会像是下面这样的写法

import {createApp,computed} from 'https://cdnjs.cloudflare.com/ajax/libs/vue/3.1.4/vue.esm-browser.min.js'
createApp({
    setup(){
        const 变数 = computed(()=>{
            return ...
        })
    }
}).mount('#app');

Proxy: Vue 的双向绑定机制

先以 Options API 的方式来说明

import {createApp,computed,ref,watch,onMounted} from 'https://cdnjs.cloudflare.com/ajax/libs/vue/3.1.4/vue.esm-browser.min.js' 

createApp({
  data(){
    return {
      text: 'hello'
    }
  },
  mounted(){
    console.log(this)
  }
}).mount('#app')

https://ithelp.ithome.com.tw/upload/images/20210820/20120722N9aLU3U6hG.jpg
Proxy 结构是 Vue 用来做双向绑定的机制,在 Options API 时可能不是那麽重要,不过 Composition API 满重要的,所以需要了解一下
https://ithelp.ithome.com.tw/upload/images/20210820/20120722duPWxrVlch.jpg
可以看到我们在 Options API data 里定义的变数存放在 [Target]
Options API 演示范例

接着我们以 Composition API 的方式来看一下

import {createApp} from 'https://cdnjs.cloudflare.com/ajax/libs/vue/3.1.4/vue.esm-browser.min.js' 

createApp({
  setup() {
    const text = "Composition API"
    
    console.log(text)
    
    return {
      text
    }
  }
}).mount('#app')

https://ithelp.ithome.com.tw/upload/images/20210820/20120722SeziAZeH9N.jpg
可以看到 console 出来的是个纯字串,Proxy 物件,还记得上面说到~ Proxy 是 Vue 用来实践 双向绑定机制的重要关键
所以这样的写法会造成 Vue 的双向绑定机制不见了 !!!~
https://ithelp.ithome.com.tw/upload/images/20210820/20120722n84VPJi926.jpg

<div id="app">
  {{ text }}
  <input type="text" name="" v-model="text">
</div>

import {createApp} from 'https://cdnjs.cloudflare.com/ajax/libs/vue/3.1.4/vue.esm-browser.min.js' 

createApp({
  setup() {
    const text = "Composition API"
    
    console.log(text)
    
    return {
      text
    }
  }
}).mount('#app')

Composition API 演示范例

下一篇就来介绍 该怎麽写 data 的资料,找回双向绑定机制 !!!


参考资料

六角学院 | Vue 3 Composition API 精髓掌握 | Youtube Vue3 新手夏令营活动
六角学院 | Composition API 共笔文件
Vue3 官方文件
segmentfault , Vue 3 生命周期完整指南
CSDn , Vue3.0的setup执行时机和注意点
IT人 lliiooiill, 简单梳理下 Vue3 的新特性

图片来源

segmentfault , Vue 3 生命周期完整指南


<<:  Proxmox VE 客体机磁碟迁移

>>:  招募

在 React Native 里实作 NSFW (Not suitable for work,工作场合不宜) 分类器

需求与场景 虽然我们的 App 为了怕麻烦,有要求 18+ 以上才能使用,但还是怕会有绕过这个限制的...

Day29-实作(地图) (part1)

进入到尾声,范例的最後一片拼图,马上开始吧!!! 地图的部分使用了leaflet JS和OpenSt...

Day25 测试与评量 MMF

Open-Match 将 MMF 以独立部件拆出,其中一个好处是,可以让我们单独对配对逻辑进行单元测...

[Day04] CH03:各式运算子(上)

今天要介绍的是运算子(Operator),在程序语言中有分为: 指定运算子 「=」可以把右侧的东西指...

【Day15】浅谈系统入侵System Hacking(二)

哈罗~ 昨天我们介绍了系统入侵的流程, 并且讲解微软提供给Window系统的验证机制。 今天想对系统...