Vue3項(xiàng)目中的hooks的使用教程
今天我們稍微說(shuō)一下 vue3 項(xiàng)目中的 hooks 的使用,其實(shí)這個(gè) hooks 呢是和 vue2 當(dāng)中的 mixin 是類似的,學(xué)習(xí)過(guò) vue2 的小伙伴一定對(duì) mixin 一定比較熟悉,就算沒(méi)用過(guò)也一定了解過(guò),也就是混入,通過(guò) mixin 混入來(lái)分發(fā) vue 組件中的可復(fù)用功能。一個(gè)混入對(duì)象可以包含任意組件選項(xiàng)。當(dāng)組件使用混入對(duì)象時(shí),所有混入對(duì)象的選項(xiàng)將被“混合”進(jìn)入該組件本身的選項(xiàng)。而 vue2 的 hooks 函數(shù)與 mixin 混入的區(qū)別,主要是 hooks 是函數(shù)。
hooks 特點(diǎn)
vue3 中的 hooks 函數(shù)相當(dāng)于 vue2 里面的 mixin 混入,不同在于 hooks 是函數(shù)。
vue3 中的 hooks 函數(shù)可以提高代碼的復(fù)用性,能夠在不同的組件當(dāng)中都利用 hooks 函數(shù)。
hooks 函數(shù)可以與 mixin 連用,但是不建議。
hooks 基本使用
首先我們不管 hooks 哈,我們先寫一個(gè)小功能,就是獲取頁(yè)面的寬高值,這個(gè)是講解 hooks 的常用案例了,都是老演員了,我們也來(lái)整一個(gè)。
我不啰嗦了,直接寫代碼吧。
<template>
<h3>hooks</h3>
<p>頁(yè)面寬度: {{screen.width}}</p>
<p>頁(yè)面高度: {{screen.height}}</p>
<el-button @click="getWH">獲取頁(yè)面的寬高</el-button>
</template>
<script setup>
import { reactive } from 'vue'
const screen = reactive({
width: 0,
height: 0
})
const getWH = () => {
screen.width = document.documentElement.clientWidth
screen.height = document.documentElement.clientHeight
}
</script>
<style scoped>
</style>
上面的代碼其實(shí)很簡(jiǎn)單了就,有兩個(gè)標(biāo)簽,顯示可視頁(yè)面的長(zhǎng)度和寬度,然后有一個(gè)按鈕獲取最新的長(zhǎng)寬進(jìn)行顯示。

這個(gè)功能是可以順利實(shí)現(xiàn)的哈。如果我們需要在另一個(gè)頁(yè)面也想實(shí)現(xiàn)這個(gè)功能的話,也很簡(jiǎn)單,在直接把上面的代碼復(fù)制一下到另一個(gè)需要實(shí)現(xiàn)的頁(yè)面就可以了。
但是
有沒(méi)有發(fā)現(xiàn)一個(gè)問(wèn)題,就是一個(gè)頁(yè)面需要就復(fù)制一遍,一個(gè)頁(yè)面需要就復(fù)制一遍,如果有一百個(gè)頁(yè)面就復(fù)制一百遍,代碼一兩行還好,如果是一個(gè)超級(jí)龐大的工具類,那么在像這樣實(shí)現(xiàn)的話,是不是就過(guò)于復(fù)雜了,而且還不好實(shí)現(xiàn),那這個(gè)問(wèn)題怎么解決呢?啊哈哈哈哈,沒(méi)錯(cuò)了寶子們,就是 hooks 。
我們針對(duì)上面的案例,我們使用 hooks 簡(jiǎn)單的實(shí)現(xiàn)一下。
首先,我們?cè)?src 文件夾下創(chuàng)建一個(gè) hooks 文件夾。

在 hooks 文件夾下創(chuàng)建一個(gè)文件,名字就叫做 useScreenWh.js 文件

接下來(lái)就很簡(jiǎn)單了,我們把獲取可視化界面的代碼放進(jìn)這個(gè) js 文件,然后導(dǎo)出去,給其他頁(yè)面使用就可以了。
import { reactive } from 'vue'
export default function () { // 導(dǎo)出一個(gè)默認(rèn)方法
// 創(chuàng)建一個(gè)對(duì)象,保存寬度和高度值
const screen = reactive({
width: 0,
height: 0
})
// 創(chuàng)建一個(gè)方法,獲取可視化界面的寬度和高度值
const getWH = () => {
screen.width = document.documentElement.clientWidth
screen.height = document.documentElement.clientHeight
}
return { screen, getWH } // 方法返回寬高值
}
然后在需要使用 hooks 的文件引入就可以使用了。
<template>
<h3>hooks</h3>
<p>頁(yè)面寬度: {{screen.width}}</p>
<p>頁(yè)面高度: {{screen.height}}</p>
<el-button @click="getWH">獲取頁(yè)面的寬高</el-button>
</template>
<script setup lang="ts">
// 導(dǎo)入 hooks
import screenWH from '../hooks/useScreenWh.js'
// 因?yàn)?screenWH 是一個(gè)導(dǎo)出的方法,所以需要調(diào)用一下子,然后順便解構(gòu)一下就可以在模板使用了。
let { screen, getWH } = screenWH()
</script>
<style scoped>
</style>
好了,我們保存看一下效果。

和之前是完全一樣的。
到此這篇關(guān)于Vue3項(xiàng)目中的hooks的使用教程的文章就介紹到這了,更多相關(guān)Vue3 hooks內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Vue.js?前端項(xiàng)目在常見(jiàn)?Web?服務(wù)器上的部署配置過(guò)程
Web服務(wù)器支持多種編程語(yǔ)言,如 PHP,JavaScript,Ruby,Python 等,并且支持動(dòng)態(tài)生成 Web 頁(yè)面,這篇文章主要介紹了Vue.js?前端項(xiàng)目在常見(jiàn)?Web?服務(wù)器上的部署配置,需要的朋友可以參考下2023-02-02
說(shuō)說(shuō)如何在Vue.js中實(shí)現(xiàn)數(shù)字輸入組件的方法
這篇文章主要介紹了說(shuō)說(shuō)如何在Vue.js中實(shí)現(xiàn)數(shù)字輸入組件的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-01-01
vue3中使用router路由實(shí)現(xiàn)跳轉(zhuǎn)傳參的方法
這篇文章主要介紹了vue3中使用router路由實(shí)現(xiàn)跳轉(zhuǎn)傳參的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-03-03
vue的無(wú)縫滾動(dòng)組件vue-seamless-scroll實(shí)例
本篇文章主要給大家講解了vue的無(wú)縫滾動(dòng)組件vue-seamless-scroll的用法,需要的朋友參考學(xué)習(xí)下吧。2017-12-12
vue-openlayers實(shí)現(xiàn)地圖坐標(biāo)彈框效果
這篇文章主要為大家詳細(xì)介紹了vue-openlayers實(shí)現(xiàn)地圖坐標(biāo)彈框效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-09-09
vue 解決addRoutes多次添加路由重復(fù)的操作
這篇文章主要介紹了vue 解決addRoutes多次添加路由重復(fù)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-08-08
Vue搭建后臺(tái)系統(tǒng)需要注意的問(wèn)題
這篇文章主要介紹了Vue搭建后臺(tái)系統(tǒng)需要做的幾點(diǎn),文中給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-11-11

