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

組合式(Composition)API

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

?1、選項式API與組合式API

在vue中我們有兩種API,一種是選項式,一種是組合式,其中選項式主要用于vue2,組合式主要用于vue3。

選項式API(Option API)?

在vue2中我們書寫選項式API,每個選項都有固定的書寫位置,使用data選項來書寫響應(yīng)式數(shù)據(jù),methods中書寫方法。

  • 優(yōu)點(diǎn):寫代碼的位置已經(jīng)約定好,結(jié)構(gòu)清晰

  • 缺點(diǎn):代碼組織性差,相似的邏輯代碼不便于復(fù)用,邏輯復(fù)雜代碼多了不好閱讀,同一功能的上下文代碼難找。

  • export default{
        data(){
            return{
                list:[]
            }
        },
        methods:{
        //書寫方法函數(shù),在需要讀取data中定義的數(shù)據(jù)時,需要使用this. 來獲取,所以里面不能使用箭頭函數(shù)
           
     },
       
        }
    

    組合式API(composition)

? ? ? ? ?所有與特定功能相關(guān)地代碼可以寫到一塊,代碼比較集中,在定義響應(yīng)式數(shù)據(jù)時不在需要data,方法函數(shù)也不再寫在metgods中

<script setup>
import { computed,watch,ref ,reactive} from "vue";
//定義響應(yīng)式數(shù)據(jù)
const num = ref('');
const list = reactive([]);
//定義方法
const getNum=()=>{
    
}

</script>

?2、生命周期函數(shù)

選項式API 組合式APT
beforeCreate 沒有beforeCreate,在setup中做了beforeCreate、created中應(yīng)該做的事
created
beforeMount onBeforeMount掛載DOM前
mounted onMounted掛載DOM后
beforeUpdate onBeforeUpdate更新組件前
updated onUpdated更新組件后
beforeDestroyed onBeforeUnmount卸載銷毀前
destroyed

onUnmount銷毀之后

? ? 最常用的兩個鉤子函數(shù)是onMounted、onUpdated。在onMounted我們一般需要將頁面需要的數(shù)據(jù)拿到,在頁面渲染時,渲染到頁面上。setup只會執(zhí)行一次,在頁面加載之前執(zhí)行。

?3、響應(yīng)式數(shù)據(jù)的定義

1、reactive

我們可以使用reactive()來創(chuàng)建一個數(shù)組或者對象

import { reactive } from 'vue'
const todolist = reactive([])

在template中直接使用,在方法或者回調(diào)函數(shù)中使用todolist

reactive() 的局限性

  1. 僅對對象類型有效(對象、數(shù)組和 Map、Set 這樣的集合類型),而對 string、numberboolean 這樣的 原始類型 無效。

  2. 因為 Vue 的響應(yīng)式系統(tǒng)是通過屬性訪問進(jìn)行追蹤的,因此我們必須始終保持對該響應(yīng)式對象的相同引用。這意味著我們不可以隨意地“替換”一個響應(yīng)式對象,因為這將導(dǎo)致對初始引用的響應(yīng)性連接丟失。

  3. 同時這也意味著當(dāng)我們將響應(yīng)式對象的屬性賦值或解構(gòu)至本地變量時,或是將該屬性傳入一個函數(shù)時,我們會失去響應(yīng)性

    2、ref()

    ref()聲明的值,在模板中可以直接使用,ref()將傳入?yún)?shù)的值包裹在一個帶有.value屬性的ref對象中,所以在調(diào)用ref聲明的值時,需要調(diào)用它的,value,才可以拿到對應(yīng)的值。一個包含對象類型值的 ref 可以響應(yīng)式地替換整個對象。

    ref 被傳遞給函數(shù)或是從一般對象上被解構(gòu)時,不會丟失響應(yīng)性

    //使用ref定義響應(yīng)式數(shù)據(jù)
    const sum = ref(0);
    const todoval = ref('');
    const arr = ref([1,3,5]);
    ?
    //在模板中直接使用
    <template>
    <p>{{ count }}</p>
    <ul>
     ?  <li v-for="(item,index) in arr" :key="index"></li>
    </ul>
    </template>
    ?
    //在方法中使用需要使用.value才可以拿到對應(yīng)的值
    const addTodo =()=>{
     ?  emit('add',todoVal.value)
     ? ? ? ? todoVal.value=''
    };
    ?

    3、toref()

    轉(zhuǎn)換響應(yīng)式對象中某個屬性為單獨(dú)響應(yīng)式數(shù)據(jù),并且值是關(guān)聯(lián)的。是基于響應(yīng)式對象上的一個屬性,創(chuàng)建一個對應(yīng)的ref,這樣創(chuàng)建的ref與原屬性保持同步,改變原屬性的值,將改變ref的值。

    const state = reactive({
      a: 1,
      b: 2
    })
    const fooRef = toRef(state, 'a')
    // 更改該 ref 會更新源屬性
    aRef.value++
    console.log(state.a) // 2
    // 更改源屬性也會更新該 ref
    state.a++
    console.log(aRef.value) // 3
    ?
    請注意,這不同于:
    const aRef = ref(state.a)//1 不會改變ref的值,因為他接受到的是一個純數(shù)值

    4、torefs()

    將一個響應(yīng)式對象轉(zhuǎn)換成一個普通的對象,這個普通對象的每個屬性都是指向原對象相應(yīng)屬性的ref,每個單獨(dú)的ref都是根據(jù)toref()創(chuàng)建的。

    toRefs 在調(diào)用時只會為源對象上可以枚舉的屬性創(chuàng)建 ref。如果要為可能還不存在的屬性創(chuàng)建 ref,需要調(diào)用toref

    const state = reactive({
      foo: 1,
      bar: 2
    })
    ?
    const stateAsRefs = toRefs(state)
    // 這個 ref 和源屬性已經(jīng)“鏈接上了”
    state.foo++
    console.log(stateAsRefs.foo.value) // 2
    ?
    stateAsRefs.foo.value++
    console.log(state.foo) // 3

    4、copmuted()

  • computed函數(shù),是用來定義計算屬性的,計算屬性不能修改。

computed函數(shù)接受一個getter函數(shù),返回一個只讀的ref對象,該對象是一個響應(yīng)式的,該對象通過.value暴露getter的返回值,它也可以創(chuàng)建一個帶有g(shù)et set的響應(yīng)式ref對象。

創(chuàng)建一個只讀的計算屬性ref

const sum = ref(0);

const sumadd = computed(()=>{
 console.log('sum',sum.value)
});

組合式api,vue.js,前端,javascript

?創(chuàng)建一個可寫的計算屬性 ref,通過get set 創(chuàng)建一個響應(yīng)式對象

const count = ref(1)

const changecount = computed(()=>{
get:()=>count.value++;
set:(sum)=>{
count.value=sum+1
}
})

組合式api,vue.js,前端,javascript

?5、watch事件監(jiān)聽函數(shù)

watch() 偵聽一個或多個響應(yīng)式數(shù)據(jù)源,并在數(shù)據(jù)源變化時調(diào)用所給的回調(diào)函數(shù),watch() 默認(rèn)是懶偵聽的,即僅在偵聽源發(fā)生變化時才執(zhí)行回調(diào)函數(shù)。
第一個參數(shù)是偵聽器的源。這個來源可以是以下幾種:

  • 一個函數(shù),返回一個值
  • 一個 ref
  • 一個響應(yīng)式對象
  • ...或是由以上類型的值組成的數(shù)組

第二個參數(shù)是在發(fā)生變化時要調(diào)用的回調(diào)函數(shù)。

  • watch函數(shù),是用來定義偵聽器的
  • 監(jiān)聽ref定義的響應(yīng)式數(shù)據(jù)
  • 監(jiān)聽多個響應(yīng)式數(shù)據(jù)數(shù)據(jù)
  • 監(jiān)聽reactive定義的響應(yīng)式數(shù)據(jù)
  • 某一個屬性深度監(jiān)聽
  • 默認(rèn)執(zhí)行

當(dāng)直接偵聽一個響應(yīng)式對象時,偵聽器會自動啟用深層模式?

監(jiān)聽ref定義的響應(yīng)式數(shù)據(jù)

import {ref,reactive,watch} from 'vue';
const num =ref(0)
const changeNum = ()=>{
    num.value +=1
}
watch(num,()=>{
    console.log('num改變了',num.value)

})

?組合式api,vue.js,前端,javascript組合式api,vue.js,前端,javascript

監(jiān)聽reactive定義的響應(yīng)式數(shù)組

const list =reactive([{name:'張三',id:1},{name:'李四',id:2}])

const changeList = ()=>{
    list.push({name:'李華',id:2})
}

watch(list,()=>{
    console.log('list改變了',list)
})

組合式api,vue.js,前端,javascript組合式api,vue.js,前端,javascript

?監(jiān)聽reactive定義的響應(yīng)式對象,在讀取以及修改數(shù)據(jù)時,要使用對姓名.鍵值? 的方式

<h1>{{ person.name }}</h1>
<button @click="getName">點(diǎn)我</button>


const person = reactive({name:'xiaoming'})
const getName=()=>{
    person.name='tom'
}
watch(person,()=>{
    console.log('person改變了',person)
})

?watchEffect()

watch選項來偵聽data或者props的數(shù)據(jù)變化,當(dāng)數(shù)據(jù)變化時執(zhí)行某一些操作,watchEffect() 立即運(yùn)行一個函數(shù),同時響應(yīng)式地追蹤其依賴,并在依賴更改時重新執(zhí)行。?

const name = ref("jeck");
      const age = ref(18);
 
      const changeName = () => name.value = "bob"
      const changeAge = () => age.value++
 
      watchEffect(() => {
        console.log("name:", name.value, "age:", age.value);
      });

停止監(jiān)聽 stop()

const name = ref("jeck");
      const age = ref(18);
      const stop = watchEffect(() => {
        console.log("name:", name.value, "age:", age.value);
      });
      const changeName = () => name.value = "bob"
      const changeAge = () => {
        age.value++;
       
        if(age.value>23){
            stop()
        }
    }

取消?watchEffect()函數(shù)的副作用文章來源地址http://www.zghlxwxcb.cn/news/detail-766695.html

watchEffect(async (onCleanup) => {
  const { response, cancel } = doAsyncWork(id.value)
  // `cancel` 會在 `id` 更改時調(diào)用
  // 以便取消之前
  // 未完成的請求
  onCleanup(cancel)
  data.value = await response
})

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

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

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

相關(guān)文章

  • 快速入門vue3組合式API

    快速入門vue3組合式API

    (創(chuàng)作不易,感謝有你,你的支持,就是我前行的最大動力,如果看完對你有幫助,請留下您的足跡) 目錄 使用create-vue創(chuàng)建項目 熟悉項目目錄和關(guān)鍵文件? 組合式API? setup選項 setup選項的寫法和執(zhí)行時機(jī) script setup?語法糖 reactive和ref函數(shù) reactive() ref() computed watch 偵聽單個數(shù)據(jù)

    2024年02月12日
    瀏覽(23)
  • 【前端Vue】Vue3+Pinia小兔鮮電商項目第1篇:認(rèn)識Vue3,1. Vue3組合式API體驗【附代碼文檔】

    【前端Vue】Vue3+Pinia小兔鮮電商項目第1篇:認(rèn)識Vue3,1. Vue3組合式API體驗【附代碼文檔】

    通過 Counter 案例 體驗Vue3新引入的組合式API 特點(diǎn): 代碼量變少 分散式維護(hù)變成集中式維護(hù) ![image.png]( create-vue是Vue官方新的腳手架工具,底層切換到了 vite (下一代前端工具鏈),為開發(fā)提供極速響應(yīng) ![image.png]( 前置條件 - 已安裝16.0或更高版本的Node.js 執(zhí)行如下命令,這一指

    2024年03月17日
    瀏覽(26)
  • 基于Vue組合式API的實(shí)用工具集

    基于Vue組合式API的實(shí)用工具集

    今天,給大家分享一個很實(shí)用的工具庫 VueUse,它是基于 Vue Composition Api,也就是組合式API。支持在Vue2和Vue3項目中進(jìn)行使用,據(jù)說是目前世界上Star最高的同類型庫之一。 圖片 官方地址: https://vueuse.org/ 中文地址: https://www.vueusejs.com/ github: https://github.com/vueuse/vueuse 圖片 鏈接

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

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

    2024年02月13日
    瀏覽(23)
  • 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日
    瀏覽(21)
  • Vue3: 選項式API和組合式API的優(yōu)缺點(diǎn)

    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基本寫法

    本文的目的,是為了讓已經(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:7、組合式API-watch

    vue3:7、組合式API-watch

    ?

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

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

    2024年02月10日
    瀏覽(24)
  • 【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)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包