【小兔鮮】day02 Pinia、項目起步、Layout

【小兔鮮】day02 Pinia、項目起步、Layout

  • 1. Pinia
  • 2. 添加Pinia到Vue項目
  • 3. 案例:Pinia-counter基礎使用
    • 3.1 Store 是什么?
    • 3.2 應該在什么時候使用 Store?
  • 4. Pinia-getters和異步action
    • 4.1 getters
    • 4.2 action如何實現異步

1. Pinia

Pinia 是 Vue 的專屬的最新狀態管理庫 ,是 Vuex 狀態管理工具的替代品。

在這里插入圖片描述

  1. 提供更加簡單的API (去掉了 mutation )
  2. 提供符合組合式風格的API (和 Vue3 新語法統一)
  3. 去掉了 modules 的概念,每一個 store 都是一個獨立的模塊
  4. 搭配 TypeScript 一起使用提供可靠的類型推斷

2. 添加Pinia到Vue項目

官方文檔 https://pinia.vuejs.org/zh/

在這里插入圖片描述

1.安裝Pinia

npm install pinia(base) ?  vue3-basic-project git:(complete)  npm install piniaadded 18 packages, removed 4 packages, and changed 17 packages in 2s23 packages are looking for fundingrun `npm fund` for details
package.json{"name": "vue3-demo-template","version": "0.0.0","scripts": {"dev": "vite","build": "vite build","preview": "vite preview"},"dependencies": {"axios": "^1.1.3","element-plus": "^2.2.19","pinia": "^3.0.1","vue": "^3.2.41"},"devDependencies": {"@vitejs/plugin-vue": "^3.1.2","mockjs": "^1.1.0","vite": "^3.1.8","vite-plugin-mock": "^2.9.6"}
}

2.使用
創建一個 pinia 實例 (根 store) 并將其傳遞給應用:

main.jsimport { createApp } from 'vue'
import { createPinia } from 'pinia'
import App from './App.vue'const pinia = createPinia()
const app = createApp(App)app.use(pinia)
app.mount('#app')

3. 案例:Pinia-counter基礎使用

使用Pinia實現計數器案例
在這里插入圖片描述

import { defineStore } from 'pinia'// 你可以任意命名 `defineStore()` 的返回值,但最好使用 store 的名字,同時以 `use` 開頭且以 `Store` 結尾。
// (比如 `useUserStore`,`useCartStore`,`useProductStore`)
// 第一個參數是你的應用中 Store 的唯一 ID。
export const useAlertsStore = defineStore('alerts', {// 其他配置...
})

3.1 Store 是什么?

Store (如 Pinia) 是一個保存狀態和業務邏輯的實體,它并不與你的組件樹綁定。換句話說,它承載著全局狀態。它有點像一個永遠存在的組件,每個組件都可以讀取和寫入它。它有三個概念,state、getter 和 action,我們可以假設這些概念相當于組件中的 data、 computed 和 methods。

3.2 應該在什么時候使用 Store?

一個 Store 應該包含可以在整個應用中訪問的數據。這包括在許多地方使用的數據,例如顯示在導航欄中的用戶信息,以及需要通過頁面保存的數據,例如一個非常復雜的多步驟表單。

另一方面,你應該避免在 Store 中引入那些原本可以在組件中保存的本地數據,例如,一個元素在頁面中的可見性。

并非所有的應用都需要訪問全局狀態,但如果你的應用確實需要一個全局狀態,那 Pinia 將使你的開發過程更輕松。

4. Pinia-getters和異步action

4.1 getters

Getter 完全等同于 store 的 state 的計算值。可以通過 defineStore() 中的 getters 屬性來定義它們。推薦使用箭頭函數,并且它將接收 state 作為第一個參數:

export const useCounterStore = defineStore('counter', {state: () => ({count: 0,}),getters: {doubleCount: (state) => state.count * 2,},
})

Pinia中的 getters 直接使用 computed函數進行模擬。
在這里插入圖片描述

在這里插入圖片描述

4.2 action如何實現異步

action中實現異步和組件中定義數據和方法的風格完全一致
在這里插入圖片描述
在這里插入圖片描述

DAY2 P4 TODO

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/76486.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/76486.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/76486.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Android學習之計算器app(java + 詳細注釋 + 源碼)

運行結果: 基礎的四則運算: 可能會出現的問題以及解決方法: 問題1:出現多個操作符。 例子:12 解決方法: 在用戶點擊操作符之后,去檢查之前的最后一位,如果最后一位也是操作符的話…

GMap.NET + WPF:構建高性能 ADS-B 航空器追蹤平臺

ADS-B 簡介 ADS - B(Automatic Dependent Surveillance - Broadcast,廣播式自動相關監視)是一種先進的航空監視技術。它依靠飛機上的機載設備,自動收集諸如飛機的位置、高度、速度、航向等關鍵數據,并周期性地以廣播的…

關于testng.xml無法找到類的問題

問題:testng.xml添加測試類的時候飄紅 解決辦法: 1.試圖通過自動生成testng.xml插件去解決,感覺也不是這個問題,沒有嘗試; 2.以為是創建包的方式不對,重新刪除后新建--還是找不到 想新建類的時候發現從m…

數據在內存中存儲(C語言)

文章目錄 前言一、整數在內存中的存儲1.1 計算機存儲數據的基本單位示例代碼 1.2 無符號整數的存儲1.3 有符號整數的存儲(補碼)示例代碼 二、大小端字節序和字節序判斷2.1 什么是大小端?示例代碼 2.2 為什么會有大小端?2.3 字節序…

Python爬蟲第2節-網頁基礎和爬蟲基本原理

目錄 一、網頁基礎 1.1 網頁的組成 1.2 網頁的結構 1.3 節點樹及節點間的關系 1.4 選擇器 二、爬蟲的基本原理 2.1 爬蟲概述 2.2 能抓怎樣的數據 2.3 JavaScript 渲染頁面 一、網頁基礎 使用瀏覽器訪問網站時,我們會看到各式各樣的頁面。你是否思考過&…

python-leetcode 64.在排序數組中查找元素的第一個和最后一個位置

題目: 給一個按照非遞減順序排列的整數數組nums,和一個目標值target,請找出給定目標值在數組中的開始位置和結束位置。 如果數組中不存在目標值target,返回[-1,-1] 方法一:二分查找 直觀的思路肯定是從前往后遍歷一遍。用兩個變量記錄第一次和最后一次…

分享一些新版GPT-4o使用方式!能多模態生圖!

目前GPT-4o的整體測評,真的很驚艷。 不知道又有多少人因為OpenAI的這次更新而失業,當然只要AI用得好,會有更多人因之而受益!很多人表示不知道怎么用,對于門外漢來說,4o似乎有點高端。 今天就給大家介紹幾…

軟件工程面試題(二十四)

1、連接池的原理 j2ee 服務器啟動時會建立一定數量的池連接,并一直維持不少于此數量的池連接。當客戶端程序需要連接時,吃驅動程序會返回一個未使用的池連接并將其標記為忙。如果當前 沒有空閑連接,池驅動就建立一定新的 連接 2、用javascript編寫腳本小程序,實現點擊全選…

Android:Dialog的使用詳解

Android中Dialog的使用詳解 Dialog(對話框)是Android中常用的UI組件,用于臨時顯示重要信息或獲取用戶輸入。 1. 基本Dialog類型 1.1 AlertDialog(警告對話框) 最常用的對話框類型,可以設置標題、消息、…

arinc818 fpga單色圖像傳輸ip

arinc818協議支持的常用線速率如下圖 隨著圖像分辨率的提高,單lane的速率無法滿足特定需求,一種方式是通過多個LANE交叉的去傳輸圖像,另外一種是通過降低圖像的帶寬,即通過只傳單色圖像達到對應的效果 程序架構如下圖所示&#x…

透視投影(Perspective projection)與等距圓柱投影(Equirectangular projection)

一、透視投影 1.方法概述 Perspective projection(透視投影)是一種模擬人眼觀察三維空間物體時的視覺效果的投影方法。它通過模擬觀察者從一個特定視點觀察三維場景的方式來創建二維圖像。在透視投影中,遠處的物體看起來比近處的物體小&…

三.微服務架構中的精妙設計:服務注冊/服務發現-Eureka

一.使用注冊中心背景 1.1服務遠程調用問題 服務之間遠程調?時, 我們的URL是寫死的 String url "http://127.0.0.1:9090/product/" orderInfo.getProductId(); 缺點: 當更換機器, 或者新增機器時, 這個URL就需要跟著變更, 就需要去通知所有的相關服…

FPGA實現4K MIPI視頻解碼H265壓縮網絡推流輸出,基于IMX317+VCU架構,支持4K60幀,提供工程源碼和技術支持

目錄 1、前言工程概述免責聲明 2、相關方案推薦我已有的所有工程源碼總目錄----方便你快速找到自己喜歡的項目我這里已有的 MIPI 編解碼方案我這里已有的視頻圖像編解碼方案 3、詳細設計方案設計框圖FPGA開發板IMX317攝像頭MIPI D-PHYMIPI CSI-2 RX Subsystem圖像預處理Sensor …

Ollama+open-webui搭建私有本地大模型詳細教程

Ollamaopen-webui搭建私有本地大模型詳細教程 1. 什么是 Ollama? 1.1. Ollama 簡介 ? Ollama 是一個輕量級的 AI 模型運行時,專注于簡化 AI 模型的部署和使用。它支持多種預訓練模型(如 Llama、Vicuna、Dolly 等),…

解決Centos7集成IDEA報git版本太低問題

Centos 7 服務器上默認安裝的 Git 是 1.8.3.1 版本的 與最新的IDEA已無法匹配,需要更新 首先,卸載老版本 sudo yum -y remove git sudo yum -y remove git-*添加 End Point 到 CentOS 7 倉庫 sudo yum -y install https://packages.endpointdev.com/r…

Qt常用宏定義判斷大全

Qt 提供了一系列預定義宏用于判斷 Qt 版本、操作系統平臺、編譯器特性等。這些宏在跨平臺開發中非常有用。 1. Qt 版本判斷宏 // 檢查Qt版本 #if QT_VERSION > QT_VERSION_CHECK(5, 15, 0)// Qt 5.15.0及以上版本特有代碼 #endif// 常用版本判斷 #if QT_VERSION > QT_V…

實戰 | 餐廳點餐小程序技術解析:SpringBoot + UniApp 高效開發指南

🖥? 一、系統架構概覽 1.1 技術選型 為了確保開發效率和系統穩定性,我們采用以下技術棧: 模塊技術選型后臺服務SpringBoot MyBatis-Plus MySQL用戶端(點餐小程序)UniApp(Vue 語法)師傅端&…

實現在Unity3D中仿真汽車,而且還能使用ros2控制

文章目錄 前言(Introduction)搭建開發環境(Setup Development Environment)在window中安裝Unity(Install Unity in window)創建Docker容器,并安裝相關軟件(Create Docker containers…

華為配置篇-BGP實驗

BGP 一、簡述二、常用命令總結三、實驗 一、簡述 IBGP 水平分割:從一個 IBGP 對等體學到的路由,不會再通告給其他的 IBGP 對等體。在一個 AS 內部,路由器之間通過 IBGP 交換路由信息。如果沒有水平分割機制,當多個路由器之間形成…

Python視頻標簽工具詳解:基于wxPython和FFmpeg的實現

在當今數字媒體時代,視頻內容的管理和標記變得越來越重要。無論是研究人員需要對實驗視頻進行時間點標記,教育工作者需要對教學視頻添加注釋,還是個人用戶希望對家庭視頻進行分類整理,一個高效的視頻標簽工具都是不可或缺的。本文…