欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Vue3使用hooks函數(shù)實現(xiàn)代碼復(fù)用詳解

 更新時間:2022年06月28日 08:39:20   作者:??tangdou369098655????  
這篇文章主要介紹了Vue3使用hooks函數(shù)實現(xiàn)代碼復(fù)用詳解,Vue3的hook函數(shù)可以幫助我們提高代碼的復(fù)用性,?讓我們能在不同的組件中都利用hooks函數(shù)

前言

項目開發(fā)過程中,我們會遇到一些情況,就是多個組件都可以重復(fù)使用的一部分代碼邏輯,功能函數(shù),我們想要復(fù)用,這可怎么辦呢?

VUE2我們是怎么做的呢?

  • 在vue2 中有一個東西:Mixins 可以實現(xiàn)這個功能
  • mixins就是將這些多個相同的邏輯抽離出來,各個組件只需要引入mixins,就能實現(xiàn)代碼復(fù)用
  • 弊端一: 會涉及到覆蓋的問題
  • 組件的data、methods、filters會覆蓋mixins里的同名data、methods、filters
  • 弊端二:隱式傳入,變量來源不明確,不利于閱讀,使代碼變得難以維護

VUE3中我們怎么處理復(fù)用代碼邏輯的封裝呢?

  • Vue3中我們可以:自定義Hook
  • Vue3 的 hook函數(shù) 相當于 vue2 的 mixin, 但是: hooks 是函數(shù)
  • Vue3 的 hook函數(shù) 可以幫助我們提高代碼的復(fù)用性, 讓我們能在不同的組件中都利用 hooks 函數(shù)

說那么多,不如直接上代碼來看差異

先來一段我們的一把梭代碼,代碼沒有復(fù)用,全都放到當前組件

<template>
  <img alt="Vue logo" src="./assets/logo.png" />
  <div>
    VUE3中的HOOKS
  </div>
  <button @click="setNumber">點擊此按鈕,調(diào)用setNumber函數(shù),數(shù)字會+1:{{myNumber}}</button>
  <button @click="a++">點擊此按鈕,數(shù)字會+1:{{a}}</button>
  <button @click="b--">點擊此按鈕,數(shù)字會-1:{}</button>
</template>
<script>
import { reactive,ref,computed,watch,watchEffect } from "vue";
export default {
  setup(){
    const  myNumber = ref(0)
    const  a = ref(0)
    const  b = ref(0)
    const setNumber = ()=>{
      myNumber.value = myNumber.value+1;
    }
    watch([a,b],([newA,newB],[oldA,oldB])=>{
      console.log('newA,oldA:')
      console.log(newA,oldA)
      console.log('newA,oldB:')
      console.log(newA,oldB)
    })
    return{
      myNumber,
      a,
      b,
      setNumber
    }
  }
}
</script>
<style>
#app {
  font-family: Avenir, Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
  
}
button{
    display: block;
    margin: 0 auto;
  }
</style>

執(zhí)行代碼看一下:

  • 上面是原始的寫法,如果這里面好幾個變量我們需要復(fù)用怎么辦呢?比如說這幾個變量,函數(shù),我們需要在其他函數(shù)里也用到,我們要怎么辦呢??
  • 下面我們就開始采用hook的方法試一把~~
  • 我們創(chuàng)建一個新的文件,src\common-hooks\numberChange.js
  • 把上面的代碼,剪切到src\common-hooks\numberChange.js,然后用這個套起來:export const useNumber =() =>{}
import { ref,watch } from "vue";
export const useNumber =() =>{
    const  myNumber = ref(0)
    const  a = ref(0)
    const  b = ref(0)
    const setNumber = ()=>{
      myNumber.value = myNumber.value+1;
    }
    watch([a,b],([newA,newB],[oldA,oldB])=>{
      console.log('newA,oldA:')
      console.log(newA,oldA)
      console.log('newA,oldB:')
      console.log(newA,oldB)
    })
    return{
      myNumber,
      a,
      b,
      setNumber
    }
}

改寫一下我們的模板代碼里的script:

<script>
import { useNumber } from "./common-hooks/numberChange";
export default {
  setup() {
    const { myNumber, a, b, setNumber } = useNumber();
    return { myNumber, a, b, setNumber };
  },
};
</script>

到此這篇關(guān)于Vue3使用hooks函數(shù)實現(xiàn)代碼復(fù)用詳解的文章就介紹到這了,更多相關(guān)Vue3 hooks函數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue3?setup語法糖之組件傳參(defineProps、defineEmits、defineExpose)示例詳解

    vue3?setup語法糖之組件傳參(defineProps、defineEmits、defineExpose)示例詳

    defineProps?和?defineEmits?都是只能在?<script?setup>?中使用的編譯器宏,他們不需要導(dǎo)入,且會隨著?<script?setup>?的處理過程一同被編譯掉,這篇文章主要介紹了vue3?setup語法糖之組件傳參(defineProps、defineEmits、defineExpose)示例詳解,需要的朋友可以參考下
    2023-01-01
  • Vue 調(diào)試訪問本地后端接口配置

    Vue 調(diào)試訪問本地后端接口配置

    記錄一下本地測試前端的時候怎么訪問本地后端接口,文中給大家提到了vue如何做調(diào)試后臺接口的配置和proxy的工作原理以及為什么能解決跨域,感興趣的朋友跟隨小編一起看看吧
    2023-06-06
  • vue-router實現(xiàn)嵌套路由的講解

    vue-router實現(xiàn)嵌套路由的講解

    今天小編就為大家分享一篇關(guān)于vue-router實現(xiàn)嵌套路由的講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • vue中前端代理跨域問題實例總結(jié)

    vue中前端代理跨域問題實例總結(jié)

    前后端分離進行項目開發(fā),跨域問題不可避免,下面這篇文章主要給大家介紹了關(guān)于vue中前端代理跨域問題的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-04-04
  • 組件中多個el-upload存在導(dǎo)致上傳圖片失效的問題及解決

    組件中多個el-upload存在導(dǎo)致上傳圖片失效的問題及解決

    這篇文章主要介紹了組件中多個el-upload存在導(dǎo)致上傳圖片失效的問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • 解決Vue2?axios發(fā)請求報400錯誤"Error:?Request?failed?with?status?code?400"

    解決Vue2?axios發(fā)請求報400錯誤"Error:?Request?failed?with?s

    這篇文章主要給大家介紹了關(guān)于如何解決Vue2?axios發(fā)請求報400錯誤"Error:?Request?failed?with?status?code?400"的相關(guān)資料,在Vue應(yīng)用程序中我們通常會使用axios作為網(wǎng)絡(luò)請求庫,需要的朋友可以參考下
    2023-07-07
  • Vue3 之 Vue 事件處理指南

    Vue3 之 Vue 事件處理指南

    Vue事件處理是每個Vue項目的必要方面。 它用于捕獲用戶輸入,共享數(shù)據(jù)以及許多其他創(chuàng)造性方式。在本文中,會介紹基礎(chǔ)知識,并提供一些用于處理事件的代碼示例。需要的小伙伴可以參考下面文章的具體內(nèi)容
    2021-09-09
  • Vue?動畫效果、過渡效果的示例代碼

    Vue?動畫效果、過渡效果的示例代碼

    這篇文章主要介紹了Vue?動畫效果、過渡效果,本文通過示例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-04-04
  • 淺談Vuex注入Vue生命周期的過程

    淺談Vuex注入Vue生命周期的過程

    這篇文章主要介紹了Vuex 注入 Vue 生命周期的過程,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-05-05
  • 詳解vue中使用protobuf踩坑記

    詳解vue中使用protobuf踩坑記

    這篇文章主要介紹了vue中使用protobuf踩坑記,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05

最新評論