最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

前言

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

VUE2我們是怎么做的呢?

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

VUE3中我們?cè)趺刺幚韽?fù)用代碼邏輯的封裝呢?

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

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

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

<template>
  <img alt="Vue logo" src="./assets/logo.png" />
  <div>
    VUE3中的HOOKS
  </div>
  <button @click="setNumber">點(diǎn)擊此按鈕,調(diào)用setNumber函數(shù),數(shù)字會(huì)+1:{{myNumber}}</button>
  <button @click="a++">點(diǎn)擊此按鈕,數(shù)字會(huì)+1:{{a}}</button>
  <button @click="b--">點(diǎn)擊此按鈕,數(shù)字會(huì)-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í)行代碼看一下:

  • 上面是原始的寫法,如果這里面好幾個(gè)變量我們需要復(fù)用怎么辦呢?比如說這幾個(gè)變量,函數(shù),我們需要在其他函數(shù)里也用到,我們要怎么辦呢??
  • 下面我們就開始采用hook的方法試一把~~
  • 我們創(chuàng)建一個(gè)新的文件,src\common-hooks\numberChange.js
  • 把上面的代碼,剪切到src\common-hooks\numberChange.js,然后用這個(gè)套起來: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ù)實(shí)現(xiàn)代碼復(fù)用詳解的文章就介紹到這了,更多相關(guān)Vue3 hooks函數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 基于Vue.js 2.0實(shí)現(xiàn)百度搜索框效果

    基于Vue.js 2.0實(shí)現(xiàn)百度搜索框效果

    這篇文章主要為大家詳細(xì)介紹了基于Vue.js 2.0實(shí)現(xiàn)百度搜索框效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • Vue在chrome44偶現(xiàn)點(diǎn)擊子元素事件無法冒泡的解決方法

    Vue在chrome44偶現(xiàn)點(diǎn)擊子元素事件無法冒泡的解決方法

    這篇文章主要給大家介紹了關(guān)于Vue在chrome44偶現(xiàn)點(diǎn)擊子元素事件無法冒泡的解決方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Vue具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • Vue PC端實(shí)現(xiàn)掃碼登錄功能示例代碼

    Vue PC端實(shí)現(xiàn)掃碼登錄功能示例代碼

    目前大多數(shù)PC端應(yīng)用都有配套的移動(dòng)端APP,如微信,淘寶等,通過使用手機(jī)APP上的掃一掃功能去掃頁面二維碼圖片進(jìn)行登錄,使得用戶登錄操作更方便,安全,快捷,這篇文章主要介紹了Vue PC端如何實(shí)現(xiàn)掃碼登錄功能,需要的朋友可以參考下
    2023-01-01
  • vue3實(shí)現(xiàn)手機(jī)上可拖拽元素的組件

    vue3實(shí)現(xiàn)手機(jī)上可拖拽元素的組件

    這篇文章主要介紹了vue3實(shí)現(xiàn)手機(jī)上可拖拽元素的組件,用vue3實(shí)現(xiàn)一個(gè)可在手機(jī)上拖拽元素的組件,可拖拽至任意位置,并且可以防止拖拽元素移出屏幕邊緣
    2022-09-09
  • vue單頁面改造多頁面應(yīng)用詳解

    vue單頁面改造多頁面應(yīng)用詳解

    本文主要介紹了vue單頁面改造多頁面應(yīng)用詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • vue項(xiàng)目引入字體.ttf的方法

    vue項(xiàng)目引入字體.ttf的方法

    今天小編就為大家分享一篇vue項(xiàng)目引入字體.ttf的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09
  • element表格行列拖拽的實(shí)現(xiàn)示例

    element表格行列拖拽的實(shí)現(xiàn)示例

    本文主要介紹了element表格行列拖拽的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • vue 關(guān)閉瀏覽器窗口的時(shí)候,清空localStorage的數(shù)據(jù)示例

    vue 關(guān)閉瀏覽器窗口的時(shí)候,清空localStorage的數(shù)據(jù)示例

    今天小編就為大家分享一篇vue 關(guān)閉瀏覽器窗口的時(shí)候,清空localStorage的數(shù)據(jù)示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • 詳解Vue適時(shí)清理keepalive緩存方案

    詳解Vue適時(shí)清理keepalive緩存方案

    說到Vue緩存,我們肯定首先選擇官方提供的緩存方案keep-alive,本文主要介紹了詳解Vue適時(shí)清理keepalive緩存方案,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • vue+socket.io+express+mongodb 實(shí)現(xiàn)簡(jiǎn)易多房間在線群聊示例

    vue+socket.io+express+mongodb 實(shí)現(xiàn)簡(jiǎn)易多房間在線群聊示例

    本篇文章主要介紹了vue+socket.io+express+mongodb 實(shí)現(xiàn)簡(jiǎn)易多房間在線群聊示例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2017-10-10

最新評(píng)論

邵阳市| 宜章县| 叙永县| 阳西县| 西青区| 乐业县| 米脂县| 河北区| 古田县| 全州县| 安多县| 沈阳市| 柳江县| 麻栗坡县| 肇东市| 襄樊市| 永胜县| 二连浩特市| 汨罗市| 佛冈县| 宜城市| 沾化县| 阳西县| 封开县| 桂平市| 瑞昌市| 巢湖市| 双辽市| 迁安市| 平山县| 施秉县| 邵阳市| 和林格尔县| 沙湾县| 兴文县| 合江县| 祁门县| 依兰县| 克山县| 聂拉木县| 玛纳斯县|