AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當前位置:首頁 > 科技  > 軟件

為什么有些 Vue3 項目已經開始棄用 Pinia 了?

來源: 責編: 時間:2024-07-04 09:02:21 125觀看
導讀真的需要 Pinia 嗎?最近在想一個問題:在 Vue3 項目中,進行狀態管理的時候,我們真的需要 Pinia 嗎?其實我們可以反過來想一個問題:沒有 Pinia,我們能做狀態管理嗎?答案是:可以!!!ref、reactiveVue3 的一些 API 對比 React 的好處就

真的需要 Pinia 嗎?

最近在想一個問題:在 Vue3 項目中,進行狀態管理的時候,我們真的需要 Pinia 嗎?gnj28資訊網——每日最新資訊28at.com

其實我們可以反過來想一個問題:沒有 Pinia,我們能做狀態管理嗎?gnj28資訊網——每日最新資訊28at.com

答案是:可以!!!gnj28資訊網——每日最新資訊28at.com

ref、reactive

Vue3 的一些 API 對比 React 的好處就是,這些 API 并不一定需要在組件中去聲明。gnj28資訊網——每日最新資訊28at.com

就比如你想要做局部狀態管理的時候,可以直接使用 reactive、ref 這類 API 來完成。gnj28資訊網——每日最新資訊28at.com

圖片圖片gnj28資訊網——每日最新資訊28at.com

gnj28資訊網——每日最新資訊28at.com

圖片圖片gnj28資訊網——每日最新資訊28at.com

gnj28資訊網——每日最新資訊28at.com

圖片圖片gnj28資訊網——每日最新資訊28at.com

gnj28資訊網——每日最新資訊28at.com

這樣能達到局部狀態管理,多組件共用同一個狀態的效果,請看下圖:gnj28資訊網——每日最新資訊28at.com

圖片圖片gnj28資訊網——每日最新資訊28at.com

gnj28資訊網——每日最新資訊28at.com

effectScope

Vue3 有一個超級冷門的 API 叫 effectScope ,這個 API 非常強大,但是很多人都不知道它。gnj28資訊網——每日最新資訊28at.com

當然,既然很少人知道它,那自然就很少人知道,Pinia 的底層原理就是依賴了 effectScope。gnj28資訊網——每日最新資訊28at.com

圖片圖片gnj28資訊網——每日最新資訊28at.com

gnj28資訊網——每日最新資訊28at.com

既然 Pinia 是通過effectScope來實現的,那么,我們自然也可以直接使用這個 API 來做狀態管理!gnj28資訊網——每日最新資訊28at.com

其實已經有人做過這件事了,就比如 vueuse 中的。gnj28資訊網——每日最新資訊28at.com

圖片圖片gnj28資訊網——每日最新資訊28at.com

gnj28資訊網——每日最新資訊28at.com

我們可以直接用這個 Hooks 來進行狀態管理,如果是使用 effectScope 來進行管理的話,狀態就不需要寫在 Hooks 外部了,因為 effectScope 內部邏輯只會執行一次,無論你調用多少次。gnj28資訊網——每日最新資訊28at.com

圖片圖片gnj28資訊網——每日最新資訊28at.com

gnj28資訊網——每日最新資訊28at.com

圖片圖片gnj28資訊網——每日最新資訊28at.com

gnj28資訊網——每日最新資訊28at.com

圖片圖片gnj28資訊網——每日最新資訊28at.com

gnj28資訊網——每日最新資訊28at.com

利用 effectScope 也能達到組件之間共享狀態!gnj28資訊網——每日最新資訊28at.com

圖片圖片gnj28資訊網——每日最新資訊28at.com

gnj28資訊網——每日最新資訊28at.com

那還需要 Pinia 嗎?

結構分明

我覺得 Pinia 還是有他的好處的,好處就是:讓我們少寫一些代碼,并且代碼更加分明。gnj28資訊網——每日最新資訊28at.com

比如下面這個例子:gnj28資訊網——每日最新資訊28at.com

  • state: 定義狀態
  • getter: 定義計算變量
  • action: 定義修改方法

結構很分明:gnj28資訊網——每日最新資訊28at.com

圖片圖片gnj28資訊網——每日最新資訊28at.com

gnj28資訊網——每日最新資訊28at.com

監聽 state

Pinia 還提供了 $subscribe 來監聽整個狀態,我們也可以利用這個方法來做持久化存儲。gnj28資訊網——每日最新資訊28at.com

圖片gnj28資訊網——每日最新資訊28at.com

gnj28資訊網——每日最新資訊28at.com

插件機制

Pinia 提供了插件機制,可以讓你去拓展 Pinia 的功能,以下是你可以擴展的內容:gnj28資訊網——每日最新資訊28at.com

  • 為 store 添加新的屬性
  • 定義 store 時增加新的選項
  • 為 store 增加新的方法
  • 包裝現有的方法
  • 改變甚至取消 action
  • 實現副作用,如本地存儲
  • 僅應用插件于特定 store

比如舉個小例子,給所有狀態管理都加一個屬性變量。gnj28資訊網——每日最新資訊28at.com

圖片gnj28資訊網——每日最新資訊28at.com

gnj28資訊網——每日最新資訊28at.com

Pinia 著名的持久化插件pinia-plugin-persistedstate就是利用了 Pinia 的插件機制。gnj28資訊網——每日最新資訊28at.com

圖片gnj28資訊網——每日最新資訊28at.com

gnj28資訊網——每日最新資訊28at.com

他的核心代碼其實很少,就是利用插件機制,使用$subscribe去監聽每一個狀態管理的變化,然后進行持久化存儲!gnj28資訊網——每日最新資訊28at.com

圖片 圖片 gnj28資訊網——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-98686-0.html為什么有些 Vue3 項目已經開始棄用 Pinia 了?

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 上海啟動未成年人網絡環境整治專項行動:重點整治網絡暴力、網絡語言污染風氣等突出問題

下一篇: 小猿學練機攜最新 AI 大模型應用成果亮相世界人工智能大會

標簽:
  • 熱門焦點
Top