国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

快速入門vue3組合式API

這篇具有很好參考價值的文章主要介紹了快速入門vue3組合式API。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

(創(chuàng)作不易,感謝有你,你的支持,就是我前行的最大動力,如果看完對你有幫助,請留下您的足跡)

快速入門vue3組合式API,# 前端vue入門,javascript,vue.js,前端,前端框架,開發(fā)語言

目錄

使用create-vue創(chuàng)建項目

熟悉項目目錄和關(guān)鍵文件?

組合式API?

setup選項

setup選項的寫法和執(zhí)行時機(jī)

script setup?語法糖

reactive和ref函數(shù)

reactive()

ref()

computed

watch

偵聽單個數(shù)據(jù)

偵聽多個數(shù)據(jù)?

immediate?

deep

精確偵聽對象的某個屬性?

生命周期函數(shù)

Vue3的生命周期API (選項式 VS 組合式)

父子通信?

組合式API下的父傳子

組合式API下的子傳父?

模版引用?

如何使用(以獲取dom為例 組件同理)

defineExpose()?


使用create-vue創(chuàng)建項目

1. 前提環(huán)境條件
已安裝 16.0 或更高版本的 Node.js
node -v
2. 創(chuàng)建一個Vue應(yīng)用
npm init vue@latest
這一指令將會安裝并執(zhí)行 create-vue

快速入門vue3組合式API,# 前端vue入門,javascript,vue.js,前端,前端框架,開發(fā)語言

熟悉項目目錄和關(guān)鍵文件?

快速入門vue3組合式API,# 前端vue入門,javascript,vue.js,前端,前端框架,開發(fā)語言

關(guān)鍵文件:
1. vite.config.js - 項目的配置文件 基于vite的配置
2. package.json - 項目包文件 核心依賴項變成了 Vue3.x 和 vite
3. main.js - 入口文件 createApp函數(shù)創(chuàng)建應(yīng)用實例
4. app.vue - 根組件 SFC單文件組件 script - template - style
????????變化一:腳本script和模板template順序調(diào)整
????????變化二:模板template不再要求唯一根元素
????????變化三:腳本script添加setup標(biāo)識支持組合式API
5. index.html - 單頁入口 提供id為app的掛載點

組合式API?

setup選項

setup選項的寫法和執(zhí)行時機(jī)

快速入門vue3組合式API,# 前端vue入門,javascript,vue.js,前端,前端框架,開發(fā)語言? ??快速入門vue3組合式API,# 前端vue入門,javascript,vue.js,前端,前端框架,開發(fā)語言

1. 執(zhí)行時機(jī),比beforeCreate還要早

2. setup函數(shù)中,獲取不到this (this是undefined)

<script> 
// setup
// 1. 執(zhí)行時機(jī),比beforeCreate還要早
// 2. setup函數(shù)中,獲取不到this (this是undefined)
export default {
  setup () {
    console.log('setup函數(shù)',this)
  },
  beforeCreate () {
    console.log('beforeCreate函數(shù)')
  }
}
</script>

網(wǎng)頁顯示為:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?快速入門vue3組合式API,# 前端vue入門,javascript,vue.js,前端,前端框架,開發(fā)語言

3. 數(shù)據(jù) 和 函數(shù),需要在 setup 最后 return,才能模板中應(yīng)用

<script> 
export default {
  setup () {
    // 數(shù)據(jù)
    const message = 'hello Vue3'
    // 函數(shù)
    const logMessage = () => {
      console.log(message)
    }
    return {
      message,
      logMessage
    }
  }
}
</script>

<template>
  <div>{{ message }}</div>
  <button @click="logMessage">按鈕</button>
</template>

script setup?語法糖

問題:每次都要return,好麻煩?

4. 通過 setup 語法糖簡化代碼

快速入門vue3組合式API,# 前端vue入門,javascript,vue.js,前端,前端框架,開發(fā)語言

<script setup>
const message = 'this is a message'
const logMessage = () => {
  console.log(message)
}
</script>

<template>
  <div>{{ message }}</div>
  <button @click="logMessage">按鈕</button>
</template>

reactive和ref函數(shù)

reactive()

作用: 接受 對象類型數(shù)據(jù)的參數(shù)傳入 并返回一個 響應(yīng)式的對象
核心步驟:
快速入門vue3組合式API,# 前端vue入門,javascript,vue.js,前端,前端框架,開發(fā)語言
1. 從 vue 包中 導(dǎo)入 reactive 函數(shù)
2. 在 <script setup> 中 執(zhí)行 reactive 函數(shù) 并傳入 類型為對象 的初始值,并使用變量接收返回值
<script setup>
//1. reactive: 接收一個對象類型的數(shù)據(jù),返回一個響應(yīng)式的對象
import { reactive } from 'vue'
const state = reactive({
  count: 100
})
const setCount = () => {
  state.count++
}

</script>

<template>
  <div>
    <div>{{ state.count }}</div>
    <button @click="setCount">+1</button>
  </div>
</template>

ref()

作用: 接收 簡單類型或者對象類型的數(shù)據(jù) 傳入 并返回一個 響應(yīng)式的對象

本質(zhì):是在原有傳入數(shù)據(jù)的基礎(chǔ)上,外層包了一層對象,包成了復(fù)雜類型

? ?????????底層,包成復(fù)雜類型之后,再借助 reactive 實現(xiàn)的響應(yīng)式

注意點:

? ?????????1. 腳本中訪問數(shù)據(jù),需要通過 .value

? ?????????2. 在template中,.value不需要加 (幫我們扒了一層)

核心步驟:

快速入門vue3組合式API,# 前端vue入門,javascript,vue.js,前端,前端框架,開發(fā)語言

1. 從 vue 包中 導(dǎo)入 ref 函數(shù)
2. 在 <script setup> 中 執(zhí)行 ref 函數(shù) 并傳入初始值,使用 變量接收 ref 函數(shù)的返回值
<script setup>
import { ref } from 'vue'
const count = ref(0)
const setCount = () => {
  count.value++
}
</script>

<template>
  <div>
    <div>{{ count }}</div>
    <button @click="setCount">+1</button>
  </div>
</template>

computed

計算屬性基本思想和Vue2的完全一致, 組合式API下的計算屬性 只是修改了寫法
核心步驟:1. 導(dǎo)入 computed函數(shù)
2. 執(zhí)行函數(shù) 在回調(diào)參數(shù)中 return基于響應(yīng)式數(shù)據(jù)做計算的值 ,用 變量接收 快速入門vue3組合式API,# 前端vue入門,javascript,vue.js,前端,前端框架,開發(fā)語言
<script setup>
import{computed,ref}from 'vue'
const list=ref([1,2,3,4,5,6,7,8])
const computedList = computed(()=>{
  return list.value.filter(item=>item>2)
})
</script>

<template>
  <div>
    <div>原始數(shù)據(jù): {{ list }}</div>
    <div>計算后的數(shù)據(jù): {{ computedList }}</div>
  </div>
</template>a

watch

作用: 偵聽 一個或者多個數(shù)據(jù) 的變化,數(shù)據(jù)變化時執(zhí)行回調(diào)函數(shù)
倆個額外參數(shù):1. immediate(立即執(zhí)行) 2. deep(深度偵聽)

偵聽單個數(shù)據(jù)

1. 導(dǎo)入watch 函數(shù)
2. 執(zhí)行watch函數(shù) 傳入要偵聽的響應(yīng)式數(shù)據(jù) (ref對象) 和回調(diào)函數(shù) 快速入門vue3組合式API,# 前端vue入門,javascript,vue.js,前端,前端框架,開發(fā)語言

偵聽多個數(shù)據(jù)?

同時偵聽多個響應(yīng)式數(shù)據(jù)的變化, 不管哪個數(shù)據(jù)變化都需要執(zhí)行回調(diào) 快速入門vue3組合式API,# 前端vue入門,javascript,vue.js,前端,前端框架,開發(fā)語言

immediate?

在偵聽器創(chuàng)建時立即觸發(fā)回調(diào), 響應(yīng)式數(shù)據(jù)變化之后繼續(xù)執(zhí)行回調(diào)快速入門vue3組合式API,# 前端vue入門,javascript,vue.js,前端,前端框架,開發(fā)語言

deep

通過watch監(jiān)聽的ref對象默認(rèn)是 淺層偵聽的,直接修改嵌套的對象屬性不會觸發(fā)回調(diào)執(zhí)行 ,需要開啟deep選項 快速入門vue3組合式API,# 前端vue入門,javascript,vue.js,前端,前端框架,開發(fā)語言
<script setup>
import{watch,ref}from 'vue'
// 4. deep 深度監(jiān)視, 默認(rèn) watch 進(jìn)行的是 淺層監(jiān)視
//    const ref1 = ref(簡單類型) 可以直接監(jiān)視
//    const ref2 = ref(復(fù)雜類型) 監(jiān)視不到復(fù)雜類型內(nèi)部數(shù)據(jù)的變化
const userInfo = ref({
  name: 'zs',
  age: 18
})
const setUserInfo = () => {
  // 修改了 userInfo.value 修改了對象的地址,才能監(jiān)視到
  // userInfo.value = { name: 'ls', age: 50 }
  userInfo.value.age++
}

// deep 深度監(jiān)視
watch(userInfo, (newValue) => {
  console.log(newValue)
}, {
  deep: true
})
</script>

<template>
  <div>{{ userInfo }}</div>
  <button @click="setUserInfo">修改userInfo</button>
</template>a

精確偵聽對象的某個屬性?

在不開啟deep的前提下,偵聽age的變化,只有age變化時才執(zhí)行回調(diào)
<script setup>
import{watch,ref}from 'vue'
// 4. deep 深度監(jiān)視, 默認(rèn) watch 進(jìn)行的是 淺層監(jiān)視
//    const ref1 = ref(簡單類型) 可以直接監(jiān)視
//    const ref2 = ref(復(fù)雜類型) 監(jiān)視不到復(fù)雜類型內(nèi)部數(shù)據(jù)的變化
const userInfo = ref({
  name: 'zs',
  age: 18
})
const setUserInfo = () => {
  // 修改了 userInfo.value 修改了對象的地址,才能監(jiān)視到
  // userInfo.value = { name: 'ls', age: 50 }
  userInfo.value.age++
}

// 5. 對于對象中的單個屬性,進(jìn)行監(jiān)視
watch(() => userInfo.value.age, (newValue, oldValue) => {
  console.log(newValue, oldValue)
})
</script>

<template>
  <div>{{ userInfo }}</div>
  <button @click="setUserInfo">修改userInfo</button>
</template>

生命周期函數(shù)

Vue3的生命周期API (選項式 VS 組合式)

快速入門vue3組合式API,# 前端vue入門,javascript,vue.js,前端,前端框架,開發(fā)語言

父子通信?

組合式API下的父傳子

基本思想
1. 父組件中給 子組件綁定屬性
2. 子組件內(nèi)部通過 props選項接收
快速入門vue3組合式API,# 前端vue入門,javascript,vue.js,前端,前端框架,開發(fā)語言
defineProps 原理:就是編譯階段的一個標(biāo)識,實際編譯器解析時,遇到后會進(jìn)行編譯轉(zhuǎn)換

組合式API下的子傳父?

基本思想
1. 父組件中給 子組件標(biāo)簽通過@綁定事件
2. 子組件內(nèi)部通過 emit 方法觸發(fā)事件
快速入門vue3組合式API,# 前端vue入門,javascript,vue.js,前端,前端框架,開發(fā)語言

模版引用?

如何使用(以獲取dom為例 組件同理)

通過ref標(biāo)識獲取真實的dom對象或者組件實例對象文章來源地址http://www.zghlxwxcb.cn/news/detail-650939.html

1. 調(diào)用ref函數(shù)生成一個ref對象
2. 通過ref標(biāo)識綁定ref對象到標(biāo)簽
快速入門vue3組合式API,# 前端vue入門,javascript,vue.js,前端,前端框架,開發(fā)語言

defineExpose()?

默認(rèn)情況下在<script setup>語法糖下 組件內(nèi)部的屬性和方法是不開放 給父組件訪問的,
可以通過defineExpose編譯宏 指定哪些屬性和方法允許訪問 快速入門vue3組合式API,# 前端vue入門,javascript,vue.js,前端,前端框架,開發(fā)語言

到了這里,關(guān)于快速入門vue3組合式API的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【Vue3】如何創(chuàng)建Vue3項目及組合式API

    【Vue3】如何創(chuàng)建Vue3項目及組合式API

    文章目錄 前言 一、如何創(chuàng)建vue3項目? ①使用 vue-cli 創(chuàng)建 ?②使用可視化ui創(chuàng)建 ?③npm init vite-app? ?④npm init vue@latest 二、 API 風(fēng)格 2.1 選項式 API (Options API) 2.2 組合式 API (Composition API) 總結(jié) 例如:隨著前端領(lǐng)域的不斷發(fā)展,vue3學(xué)習(xí)這門技術(shù)也越來越重要,很多人都開啟了學(xué)習(xí)

    2024年02月03日
    瀏覽(14)
  • vue3 組合式 api 單文件組件寫法

    Vue3 中的 Composition API 是一種新的編寫組件邏輯的方式,它提供了更好的代碼組織、類型推導(dǎo)、測試支持和復(fù)用性。相比于 Vue2 的 Options API,Composition API 更加靈活和可擴(kuò)展。 在 Composition API 中,我們使用 setup 函數(shù)來定義組件的邏輯部分。setup 函數(shù)是一個特殊的函數(shù),在創(chuàng)建組

    2024年02月12日
    瀏覽(20)
  • vue3組合式api單文件組件寫法

    一,模板部分? 二,js邏輯部分?

    2024年02月13日
    瀏覽(23)
  • vue3:7、組合式API-watch

    vue3:7、組合式API-watch

    ?

    2024年02月09日
    瀏覽(23)
  • 帶你了解vue3組合式api基本寫法

    本文的目的,是為了讓已經(jīng)有 Vue2 開發(fā)經(jīng)驗的 人 ,快速掌握 Vue3 的寫法。 因此, 本篇假定你已經(jīng)掌握 Vue 的核心內(nèi)容 ,只為你介紹編寫 Vue3 代碼,需要了解的內(nèi)容。 一、Vue3 里 script 的三種寫法 首先,Vue3 新增了一個叫做組合式 api 的東西,英文名叫 Composition API。因此 Vu

    2024年02月01日
    瀏覽(20)
  • Vue3: 選項式API和組合式API的優(yōu)缺點

    Vue框架提供了兩種不同的API風(fēng)格來編寫組件,分別是 選項式API 和 組合式API 。 一.選項式API: 選項式API是vue2.x版本中默認(rèn)使用的API風(fēng)格,它是基 于對象的方式 來描述組件的行為和狀態(tài)的。選項式API需要在Vue組件的選項對象中聲明組件的屬性和方法,如data、methods、computed、

    2024年02月09日
    瀏覽(24)
  • Vue3的組合式API中如何使用provide/inject?

    聽說 Vue 3 加入了超多酷炫的新功能,比如組合式 API 等等。今天我們就來聊聊 Vue 3 中的組合式 API,并且如何使用 provide/inject 來搞定它! 首先,我們來了解一下組合式 API 是什么。其實,組合式 API 就是一個用來構(gòu)建和組合函數(shù)的工具,它能讓我們的代碼更加簡潔、可讀性更

    2024年02月11日
    瀏覽(22)
  • vue3 組合式api中 ref 和$parent 的使用

    vue3 組合式api中 ref 和$parent 的使用

    ref 的使用 vue3中, 在 組件中添加一個 component ref=“xxx” ,就可以在父組件中得到 子組件的 dom 對象, 以及 虛擬的 dom 對象, 有了虛擬 dom, 我們就可以在父組件中控制子組件的顯示了 ref 的使用方法 vue3中ref 的特點 以上如果在vue2中,就可以使用 子組件的對象來改變子組件的

    2024年02月10日
    瀏覽(41)
  • 【vue3.0 組合式API與選項式API是什么,有什么區(qū)別】

    Vue3.0中引入了組合式API(Composition API),同時保留了選項式API(Options API)。兩種 API 風(fēng)格都能夠覆蓋大部分的應(yīng)用場景。它們只是同一個底層系統(tǒng)所提供的兩套不同的接口。實際上,選項式 API 是在組合式 API 的基礎(chǔ)上實現(xiàn)的!關(guān)于 Vue 的基礎(chǔ)概念和知識在它們之間都是通用的

    2024年02月10日
    瀏覽(22)
  • 最新 Vue3、TypeScript、組合式API、setup語法糖 學(xué)習(xí)筆記

    最新 Vue3、TypeScript、組合式API、setup語法糖 學(xué)習(xí)筆記

    備注:目前 vue-cli 已處于維護(hù)模式,官方推薦基于 Vite 創(chuàng)建項目。 vite 是新一代前端構(gòu)建工具,官網(wǎng)地址:https://vitejs.cn vite 的優(yōu)勢如下: 輕量快速的熱重載(HMR),能實現(xiàn)極速的服務(wù)啟動。 對 TypeScript 、 JSX 、 CSS 等支持開箱即用。 真正的按需編譯,不再等待整個應(yīng)用編譯

    2024年02月20日
    瀏覽(34)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包