自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Vue3 新玩法!我能操控計算屬性 Computed!

開發(fā) 前端
需求是這樣的,我有一個變量 sum,是通過computed去計算的,且 sum 依賴的變量有的是響應式的,有的不是響應式的,所以會造成以下的后果,當非響應式變量改變時,并不會觸發(fā)sum 的響應式更新,只有響應式變量改變時才會觸發(fā)sum的響應式更新。

背景

最近在做一個需求的時候,用到了一個 Vue3 內(nèi)置的 API,發(fā)現(xiàn)真的非常實用,分享給大家。

需求是這樣的,我有一個變量 sum,是通過computed去計算的,且 sum 依賴的變量有的是響應式的,有的不是響應式的,所以會造成以下的后果,當非響應式變量改變時,并不會觸發(fā)sum 的響應式更新,只有響應式變量改變時才會觸發(fā)sum的響應式更新。

圖片圖片

所以我需要用到一個 Vue3 的內(nèi)置 API,它就是customRef。

customRef

創(chuàng)建一個自定義的 ref,顯式聲明對其依賴追蹤和更新觸發(fā)的控制方式。

類型

圖片圖片

詳細信息

customRef() 預期接收一個工廠函數(shù)作為參數(shù),這個工廠函數(shù)接受 track 和 trigger 兩個函數(shù)作為參數(shù),并返回一個帶有 get 和 set 方法的對象。

一般來說,track() 應該在 get() 方法中調(diào)用,而 trigger() 應該在 set() 中調(diào)用。然而事實上,你對何時調(diào)用、是否應該調(diào)用他們有完全的控制權。

實踐小案例:防抖 Ref

創(chuàng)建一個防抖 ref,即只在最近一次 set 調(diào)用后的一段固定間隔后再調(diào)用:

圖片圖片

在組件中使用:

圖片圖片

可控的 computed

圖片圖片

再回到一開始的話題,我遇到的問題是:當非響應式變量改變時,并不會觸發(fā)sum 的響應式更新,只有響應式變量改變時才會觸發(fā)sum的響應式更新。

所以我們需要當非響應式變量count1、count2改變的時候,去手動觸發(fā) computed 的計算,這樣才能更新 sum,但是 computed 返回的不是一個函數(shù)啊,我們要怎么去手動觸發(fā)計算呢?

所以這時候就需要一個可控的 computed,它擁有以下功能:

1、能根據(jù)響應式變量去自動觸發(fā)計算更新

2、提供一個方法讓用戶手動去調(diào)用觸發(fā)更新

期望使用方式是這樣的:

圖片圖片

具體的代碼實現(xiàn)如下:

圖片 圖片

責任編輯:武曉燕 來源: 前端之神
相關推薦

2023-12-11 07:34:37

Computed計算屬性Vue3

2022-07-14 08:22:48

Computedvue3

2021-12-08 09:09:33

Vue 3 Computed Vue2

2022-06-26 00:00:02

Vue3響應式系統(tǒng)

2021-12-01 08:11:44

Vue3 插件Vue應用

2022-04-11 08:03:30

Vue.jscomputed計算屬性

2024-09-05 08:50:11

2021-11-30 08:19:43

Vue3 插件Vue應用

2023-11-28 09:03:59

Vue.jsJavaScript

2021-12-14 21:43:13

Vue3函數(shù)computed

2020-09-19 21:15:26

Composition

2021-05-12 10:25:29

開發(fā)技能代碼

2021-12-02 05:50:35

Vue3 插件Vue應用

2024-08-23 08:45:04

響應式Vue3API

2021-05-12 10:25:53

組件驗證漏洞

2025-01-06 09:14:54

HOCVue3render

2021-05-26 10:40:28

Vue3TypeScript前端

2021-11-16 08:50:29

Vue3 插件Vue應用

2022-03-10 11:04:04

Vue3Canvas前端

2022-03-07 11:15:25

Pinia狀態(tài)庫vue3
點贊
收藏

51CTO技術棧公眾號