【UniApp】-uni-app-pinia存儲數據

来源:https://www.cnblogs.com/BNTang/archive/2023/12/19/17912880.html
-Advertisement-
Play Games

前言 經過上個章節的介紹,大家可以瞭解到 uni-app-數據緩存 的基本使用方法 那本章節來給大家介紹一下 uni-app-pinia存儲數據 的基本使用方法 經過我這麼多篇章的介紹,我發現大家環境比較耗時,所以在今後的文章中,我會儘量減少環境的搭建 如果某一篇的文章環境確實是不一樣的,我會在文章 ...


前言

  • 經過上個章節的介紹,大家可以瞭解到 uni-app-數據緩存 的基本使用方法
  • 那本章節來給大家介紹一下 uni-app-pinia存儲數據 的基本使用方法
  • 經過我這麼多篇章的介紹,我發現大家環境比較耗時,所以在今後的文章中,我會儘量減少環境的搭建
  • 如果某一篇的文章環境確實是不一樣的,我會在文章中說明,然後編寫對應的搭建過程

本文的由來呢,就是因為在 Vue2 中與 Vue3 中都可以使用 Vuex 來進行數據的存儲, 但是在 Vue3 出現了 Pinia,所以我就想著在 uni-app 中使用 Pinia 來進行數據的存儲。

步入正題

首先來給大家看看官方文檔吧,在文檔中找到, uni-app -> 教程 -> vue語法,先來看 Vue2:

可以從圖中看到,在 Vue2 當中的存儲方式只有 Vuex,然後再來看看 Vue3:

多了一個 Pinia,好,知道了這些內容之後我就來開始寫代碼編寫示例,帶大家過一遍。

  • 使用 UniApp 創建的項目是內置了 Pinia,Vue2 項目暫不支持

根據官方文檔的介紹,首先我們需要搭建一個對應的目錄結構:

├── pages
├── static
└── stores
    └── counter.js
├── App.vue
├── main.js
├── manifest.json
├── pages.json
└── uni.scss

就是創建一個 stores 文件夾,在該文件夾下創建對應模塊的 js 文件。

  • 創建一個預設模板項目,基於 Vue3
  • 創建好項目之後,首先更改 main.js,導入 pinia,註冊 pinia,導出 pinia

Pinia

配置 Pinia

導入 Pinia:

import * as Pinia from 'pinia';

註冊 Pinia:

app.use(Pinia.createPinia());

導出 Pinia:

return {
    app,
    // 此處必須將 Pinia 返回
    Pinia,
}

使用 Pinia

首先在 stores 文件夾下,創建 counter.js,內容如下:

import {
	defineStore
} from 'pinia';

export const useCounterStore = defineStore('counter', {
	state: () => {
		return {
			count: 0
		};
	},
	// 也可以這樣定義
	// state: () => ({ count: 0 })
	actions: {
		increment() {
			this.count++;
		},
		decrement() {
			this.count--;
		},
	},
});

如上代碼通過 defineStore 定義了一個名為 counter 的 store,然後通過 state 定義了一個 count 的狀態,然後通過 actions 定義了兩個方法,分別是 increment 和 decrement,分別用來增加和減少 count 的值。

再接著在首頁頁面,添加兩個按鈕分別是增加與減少調用 store 中的方法:

<template>
	<view>
		{{ count }}
		<button type="primary" @click="myIncrement">增加</button>
		<button type="primary" @click="myDecrement">減少</button>
	</view>
</template>

<script setup>
	import {
		useCounterStore
	} from '@/stores/counter.js'
	import {
		storeToRefs
	} from 'pinia'

	const counterStore = useCounterStore()

	const {
		count
	} = storeToRefs(counterStore)

	function myIncrement() {
		counterStore.increment()
	}

	function myDecrement() {
		counterStore.decrement()
	}
</script>

代碼我寫完了,先來看運行的效果,然後我在一一解釋代碼:

  • 如上代碼的含義首先在 script setup 中導入了 useCounterStore,然後通過 useCounterStore 創建了一個 counterStore
  • 然後通過 storeToRefs 將 counterStore 中的 count 轉換成了 ref,然後在模板中通過 {{ count }} 將 count 的值顯示出來
  • 然後通過 @click 調用 myIncrement 和 myDecrement 方法,然後在 myIncrement 和 myDecrement 方法中調用了 counterStore 中的 increment 和 decrement 方法
  • 然後通過 counterStore.increment() 和 counterStore.decrement() 調用了 store 中的方法

好,到這已經結束了,是不是很簡單,我就不多說了,大家可以自己去嘗試一下。

這個存儲的是全局的數據,大家還可以新建一個 one 頁面,配置一下 tabBar 在 one 頁面中從 store 中獲取 count 的值, 顯示一下即可,在首頁操作之後 one 頁面的 count 的值也會發生變化。

End

  • 如果你有任何問題或建議,歡迎在下方留言,我會儘快回覆
  • 如果你覺得本文對你有幫助,歡迎點贊、收藏,你的支持是我寫作的最大動力


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 綠色安裝實施步驟地址: https://blog.csdn.net/qq_39135287/article/details/82117234 簡略步驟: 1.到官網下載綠色安裝包(https://dev.mysql.com/downloads/mysql/) 2.解壓mysql包到指定的位置並新建d ...
  • 12月16日周六下午,由NineData、PostgreSQL中文社區、PolarDB開源社區共同舉辦的《國產資料庫共話未來趨勢》技術沙龍,在NineData的報告廳成功舉辦。本次沙龍匯聚阿裡雲、玖章算術、百度雲、飛輪科技、YMatrix、格睿科技、羲和Halo等眾多資料庫廠商的技術大咖,以及北京大... ...
  • 如今,大規模、高時效、智能化數據處理已是“剛需”,企業需要更強大的數據平臺,來應對數據查詢、數據處理、數據挖掘、數據展示以及多種計算模型並行的挑戰,湖倉一體方案應運而生。 《實時湖倉實踐五講》是袋鼠雲打造的系列直播活動,將圍繞實時湖倉的建設趨勢和通用問題,邀請奮戰於企業數字化一線的核心產品&技術專家 ...
  • 最近開始體驗FastGPT知識庫問答系統,參考官方文檔,在自己的阿裡雲伺服器使用Docker Compose快速完成了部署。 環境說明:阿裡雲ECS,2核8G,X86架構,CentOS 7.9操作系統。 Docker與Docker-Compose安裝 1.登錄伺服器,執行相關命令完成安裝。 # 安裝 ...
  • 這裡給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 你知道奇怪的移動視口錯誤(也稱為100vh bug)嗎?或者如何以正確的方式創建全屏塊? 一、100vh bug 什麼是移動視口錯誤? 你是否曾經在網頁上創建過全屏元素?只需添加一行 CSS 並不難: .my-page { height: ...
  • 一、qiankun使用場景 1. 簡介:qiankun是在single-spa的基礎上實現的,可以保證各個項目獨立使用,也可以集成使用。各系統之間不受技術棧的限制,集成使用也能保證各樣式和全局變數的隔離。 模塊的插拔式使用,當公司項目集是一個大系統下包含多個子系統或者模塊時,可以採用這種方式動態部署 ...
  • 你知道奇怪的移動視口錯誤(也稱為100vh bug)嗎?或者如何以正確的方式創建全屏塊? 一、100vh bug 什麼是移動視口錯誤? 你是否曾經在網頁上創建過全屏元素?只需添加一行 CSS 並不難: .my-page { height: 100vh } 1vh是視口高度的1% ,正是我們所需要的。 ...
  • 基於 Chromium 的瀏覽器占了全球市場的 7 成!對於前端開發來說,Chrome 更是形影不離的飯碗級軟體
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...