日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網營銷解決方案
VueUse中的這五個函數,也太好用了吧

VueUse 是 Anthony Fu 大佬的一個開源項目,它為Vue的開發(fā)者提供了大量用于 Vue2 和Vue3 的基本 Composition API 實用工具函數。

它有幾十個用于常見開發(fā)人員用例的解決方案,如跟蹤ref更改,檢測元素可見性,簡化常見Vue模式,鍵盤/鼠標輸入等。 這是真正節(jié)省開發(fā)時間的好方法,因為我們不必自己親手添加所有這些標準功能,拿來主義,用就對了(再次感謝大佬的付出)。

我喜歡VueUse庫,因為它在決定提供哪些實用工具時真正把開發(fā)者放在第一位,而且它是一個維護良好的庫,因為它與Vue的當前版本保持同步。

VueUse 有哪些實用方法?

如果你想看到每一個實用程序的完整列表,建議去看看官方文檔。但總結一下,VueUse 中有9種類型的函數。

  • Animation(動畫) - 包含易于使用的過渡、超時和計時功能
  • Browser (瀏覽器) - 可以用于不同的屏幕控件、剪貼板、首選項等等
  • Component (組件) - 為不同的組件方法提供簡寫
  • Sensors (傳感器)- 用來監(jiān)聽不同的DOM事件、輸入事件和網絡事件
  • State (狀態(tài)) - 管理用戶狀態(tài)(全局,本地存儲,會話存儲)
  • Utility (實用方法)--不同的實用方法,如getters、conditionals、ref synchronization等。
  • Watch --更高級的觀察器類型,如可暫停的觀察器、放棄的觀察器和條件觀察器
  • 其它 - 事件、WebSockets和 Web workers 的不同類型的功能

將 Vueuse 安裝到 Vue 項目中

VueUse 的最大特點之一是,它只用一個包就能兼容 Vue2 和 Vue3!

安裝VueUse有兩種選擇:npm或 CDN

 
 
 
 
  1. npm i @vueuse/core # yarn add @vueuse/core 
 
 
 
 
  1.  
  2.  

推薦使用NPM,因為它更容易理解,但如果我們使用CDN, 可能通過 window.VueUse 來訪問。

使用 npm,可以通過解構的方式來獲得想要的方法:

 
 
 
 
  1. import { useRefHistory } from '@vueuse/core' 

useRefHistory 跟蹤響應式數據的變化

useRefHistory跟蹤對 ref 所做的每一個改變,并將其存儲在一個數組中。這樣我們能夠輕松為應用程序提供撤銷和重做功能。

來看一個示例,在該示例中,我們做一個能夠撤銷的文本區(qū)域

第一步是在沒有 VueUse 的情況下創(chuàng)建我們的基本組件--使用ref、textarea、以及用于撤銷和重做的按鈕。

 
 
 
 
  1.  
  2.  
  3.  
  4.  
  5.  
  6.   button { 
  7.     border: none; 
  8.     outline: none; 
  9.     margin-right: 10px; 
  10.     background-color: #2ecc71; 
  11.     color: white; 
  12.     padding: 5px 10px;; 
  13.   } 
  14.  

接著,導入useRefHistory,然后通過 useRefHistory從 text 中提取history、undo和redo屬性。

 
 
 
 
  1. import { ref } from 'vue' 
  2. import { useRefHistory } from '@vueuse/core' 
  3.  
  4. const text = ref('') 
  5. const { history, undo, redo } = useRefHistory(text) 

每當我們的ref發(fā)生變化,更新history屬性時,就會觸發(fā)一個監(jiān)聽器。

為了看看底層做了什么,我們把 history 內容打印出來。并在單擊相應按鈕時調用 undo 和redo函數。

 
 
 
 
  1.  
  2.  
  3.  
  4.  
  5.  
  6.   button { 
  7.     border: none; 
  8.     outline: none; 
  9.     margin-right: 10px; 
  10.     background-color: #2ecc71; 
  11.     color: white; 
  12.     padding: 5px 10px;; 
  13.   } 
  14.  

直接,跑起來,效果如下:

還有不同的選項,為這個功能增加更多的功能。例如,我們可以深入追蹤 reactive 對象,并像這樣限制 history 記錄的數量。

 
 
 
 
  1. const { history, undo, redo } = useRefHistory(text, { 
  2.   deep: true, 
  3.   capacity: 10, 
  4. }) 

onClickOutside 關閉 modal

onClickOutside 檢測在一個元素之外的任何點擊。根據我的經驗,這個功能最常見的使用情況是關閉任何模態(tài)或彈出窗口。

通常,我們希望我們的模態(tài)屏蔽網頁的其余部分,以吸引用戶的注意和限制錯誤。然而,如果他們確實點擊了模態(tài)之外,我們希望它關閉。

要做到這一點,只有兩個步驟。

  • 為要檢測的元素創(chuàng)建一個模板引用
  • 使用這個模板ref運行onClickOutside

這是一個簡單的組件,使用onClickOutside彈出窗口。

 
 
 
 
  1.  
  2.  
  3.  
  4.  
  5.  
  6.   button { 
  7.     border: none; 
  8.     outline: none; 
  9.     margin-right: 10px; 
  10.     background-color: #2ecc71; 
  11.     color: white; 
  12.     padding: 5px 10px;; 
  13.   } 
  14.   .popup { 
  15.     position: fixed; 
  16.     top: ; 
  17.     left: ; 
  18.     width: 100vw; 
  19.     height: 100vh; 
  20.     display: flex; 
  21.     align-items: center; 
  22.     justify-content: center; 
  23.     background: rgba(, , , 0.1); 
  24.   } 
  25.   .popup-content { 
  26.     min-width: 300px; 
  27.     padding: 20px; 
  28.     width: 30%; 
  29.     background: #fff; 
  30.   } 

結果是這樣的,我們可以用我們的按鈕打開彈出窗口,然后在彈出內容窗口外單擊關閉它。

useVModel 簡化 v-model 的綁定。

Vue開發(fā)者的一個常見用例是為一個組件創(chuàng)建一個自定義的v-model綁定。這也要求我們的組件接受一個 value 作為 prop,每當這個 value 被修改,我們的組件就會向父類發(fā)出一個 update 事件。

useVModel函數將其簡化為只使用標準的ref語法。假設我們有一個自定義的文本輸入,試圖為其文本輸入的值創(chuàng)建一個v-model。通常情況下,我們必須接受一個 value的 prop,然后發(fā)出一個 change事件來更新父組件中的數據值。

我們可以使用useVModel,把它當作一個普通的ref,而不是使用ref并調用props.value和update:value。這有助于減少我們需要記住的不同語法的數量!

 
 
 
 
  1.  
  2.  
  3.  

每當需要訪問value時,我們只需調用.value,useVModel將從我們的組件 props 中給我們提供值。而每當改變對象的值時,useVModel 會向父組件發(fā)出一個更新事件。

下面是父組件的一個簡單示例

 
 
 
 
  1.  
  2.  
  3.  
  4.  
  5.  
  6. .container { 
  7.   width: 80%; 
  8.   margin:  auto; 
  9.   background-color: #fafafa; 
  10.   max-height: 300px; 
  11.   overflow: scroll; 
  12. .target { 
  13.   margin-top: 500px; 
  14.   background-color: #1abc9c; 
  15.   color: white; 
  16.   padding: 20px; 
  17.  

運行后,對應的值會更新:

我們還可以為我們的 Intersection Observer 指定更多的選項,比如改變它的根元素、邊距(計算交叉點時對根的邊界框的偏移)和閾值水平。

 
 
 
 
  1. const { stop } = useIntersectionObserver( 
  2.       target, 
  3.       ([{ isIntersecting }], observerElement) => { 
  4.         targetIsVisible.value = isIntersecting 
  5.       }, 
  6.       { 
  7.         // root, rootMargin, threshold, window 
  8.         // full options in the source: https://github.com/vueuse/vueuse/blob/main/packages/core/useIntersectionObserver/index.ts 
  9.         threshold: 0.5, 
  10.       } 

同樣重要的是,這個方法返回一個 stop 函數,我們可以調用這個函數來停止觀察交叉點。如果我們只想追蹤一個元素在屏幕上第一次可見的時候,這就特別有用。

在這段代碼中,一旦targetIsVisible被設置為true,observer 就會停止,即使我們滾動離開目標元素,我們的值也會保持為 true 。

 
 
 
 
  1. const { stop } = useIntersectionObserver( 
  2.       target, 
  3.       ([{ isIntersecting }], observerElement) => { 
  4.         targetIsVisible.value = isIntersecting 
  5.         if (isIntersecting) { 
  6.           stop() 
  7.         } 
  8.       }, 
  9.     ) 

使用 useTransition 做個數字加載動畫

useTransition是整個VueUse庫中我最喜歡的函數之一。它允許我們只用一行就能順利地在數值之間進行過渡。

如果使用 useTransition 做一個下面這樣的效果,要怎么做呢?

我們可以通過三個步驟來做到這一點。

  • 初始化一個 ref 變量 count ,初始值為 0
  • 使用 useTransition 創(chuàng)建一個變量 output
  • 改變 count 的值
 
 
 
 
  1. import { ref } from 'vue' 
  2. import { useTransition, TransitionPresets } from '@vueuse/core' 
  3.  
  4. const count = ref(0) 
  5.  
  6. const output = useTransition(count , { 
  7.   duration: 3000, 
  8.   transition: TransitionPresets.easeOutExpo, 
  9. }) 
  10.  
  11. count.value = 5000 
  12.  
  13.  

然后在 template 中顯示 output 的值:

 
 
 
 
  1.  
  2.  
  3.  

運行結果:

我們還可以使用useTransition 轉換整個數字數組。 使用位置或顏色時,這非常有用。 使用顏色的一個很好的技巧是使用計算的屬性將RGB值格式化為正確的顏色語法。

 
 
 
 
  1.  
  2.  
  3.  

總結

這不是VueUse的完整指南。這些只是我平常比較常用的函數,還有很多好用的函數,大家可以自行到官網去學習使用。

作者:Matt Maribojoc 譯者:前端小智 來源:medium

原文:https://learvue.co/2021/07/5-vueuse-library-functions-that-can-speed-up-development/


文章名稱:VueUse中的這五個函數,也太好用了吧
網頁路徑:http://m.5511xx.com/article/cdpdjgp.html