Pinia的基本用法

Pinia的安裝和引入

1.安裝Pinia

npm install pinia

2. 在vue項目的main.js文件中引入pinia

import { 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')

Pinia的基本使用

使用pinia實現計數器

1.在src目錄下創建stores目錄,并新建文件counter.js
在這里插入圖片描述
**2. 在counter.js文件中使用defineStore定義對象useCounterStore **

import { defineStore } from 'pinia'
import { ref } from 'vue'export const useCounterStore = defineStore('counter', () => {// 定義數據(state)const count = ref(0)// 定義修改數據的方法(action 同步+異步)const increment = () => {count.value++}// 以對象的方式return供組件使用return {count,increment}
})

**3.在App.vue文件中導入counter.js文件中的useCounterStore **

<script setup>
// 1. 導入use打頭的方法
import { useCounterStore } from '@/stores/counter'
// 2. 執行方法得到store實例對象
const counterStore = useCounterStore()
console.log(counterStore)
</script><template><button @click="counterStore.increment"> {{ counterStore.count}} </button>
</template><style scoped></style>

getters和異步action

在counter.js文件中進行如下定義

import { defineStore } from 'pinia'
import { computed, ref } from 'vue'
import axios from 'axios'const API_URL = "http://geek.itheima.net/v1_0/channels"
export const useCounterStore = defineStore('counter', () => {// 定義數據(state)const count = ref(0)// 定義修改數據的方法(action 同步+異步)const increment = () => {count.value++}// getter定義const doubleCount = computed(() => count.value * 2)// 定義異步actionconst list = ref([])const getList = async () => {const res = await axios.get(API_URL)list.value = res.data.data.channels}// 以對象的方式return供組件使用return {count,doubleCount,increment,list,getList}
})

在App.vue中使用

<script setup>
// 1. 導入use打頭的方法
import { useCounterStore } from '@/stores/counter'
import { onMounted } from 'vue';
// 2. 執行方法得到store實例對象
const counterStore = useCounterStore()
console.log(counterStore)
onMounted(()=>{ // 掛載期發起請求counterStore.getList()
})
</script><template><button @click="counterStore.increment"> {{ counterStore.count}} </button>{{ counterStore.doubleCount }}<ul><li v-for="item in counterStore.list" :key="item.id">{{ item.name }}</li></ul>
</template><style scoped></style>

使用storeToRefs進行結構賦值,保持響應式更新

<script setup>
// 1. 導入use打頭的方法
import { useCounterStore } from '@/stores/counter'
import { onMounted } from 'vue';
import { storeToRefs } from 'pinia'
// 2. 執行方法得到store實例對象
const counterStore = useCounterStore()
console.log(counterStore)// 直接結構賦值(響應式丟失)
// const { count, doubleCount} = counterStore
// console.log(count, doubleCount)// 方法包裹(保持響應式更新)
const { count, doubleCount } = storeToRefs(counterStore)
console.log(count, doubleCount)// 方法直接從原來的counterStore解構賦值
const { increment } = counterStore// 觸發action
onMounted(()=>{ counterStore.getList()
})
</script><template><button @click="increment"> {{ count }} </button>{{ doubleCount }}<ul><li v-for="item in counterStore.list" :key="item.id">{{ item.name }}</li></ul>
</template><style scoped></style>

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

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

相關文章

日志打印中對容器(包括多級容器)的通用輸出

在日志打印中&#xff0c;往往有打印一個數組、集合等容器中的每個元素的需求&#xff0c;這些容器甚至可能嵌套起來&#xff0c;如果每個地方都用for循環打印&#xff0c;將會特別麻煩。基于這種需求&#xff0c;作者嘗試實現一個通用的打印函數SeqToStr()&#xff0c;將容器序…

線上民族傳統服飾商城

摘 要 隨著互聯網的不斷發展和普及&#xff0c;電子商務成為了人們生活中不可或缺的一部分。傳統的線下購物方式逐漸被線上購物所取代&#xff0c;人們越來越習慣在互聯網上購物。而民族傳統服飾作為我國豐富多樣的民族文化的重要組成部分&#xff0c;具有獨特的藝術價值和商業…

unity VR Interaction Framework 創建新手勢

提示&#xff1a;文章有錯誤的地方&#xff0c;還望諸位大神不吝指教&#xff01; 文章目錄 前言一、新建物體&#xff0c;并添加必要組件二、添加抓取點三、查看手勢的可視化樣式四、制作新的手勢1.點擊編輯2.根據需求調節手指關節3.保存手勢4. 使用創建的手勢5.運行 總結 前言…

等保測評——安全通信網絡——安全區域邊界

安全通信網絡 網絡架構 a) 應保證網絡設備的業務處理能力滿足業務高峰期需要&#xff1b; b) 應保證網絡各個部分的帶寬滿足業務高峰期需要&#xff1b; c) 應劃分不同的網絡區域&#xff0c;并按照方便管理和控制的原則為各網絡區域分配地址&#xff1b; 應核查是否依據重…

遠程過程調用協議gRPC及在go環境下的使用

1. 遠程過程調用協議 1.1 定義 遠程過程調用(Remote Procedure Call&#xff0c;PRC是一種進程間通信技術&#xff0c;它使得程序可以像調用本地函數一樣調用遠程服務器上的函數。RPC 屏蔽了底層的通信細節&#xff0c;讓開發者能夠更專注于業務邏輯&#xff0c;而無需關心網絡…

無源電壓繼電器 JDY-1210AW 導軌安裝 約瑟JOSEF

系列型號&#xff1a; JDY-1002AW電壓繼電器&#xff1b;JDY-1002B電壓繼電器&#xff1b; JDY-1110AW電壓繼電器&#xff1b;JDY-1110B電壓繼電器&#xff1b; JDY-1220AW電壓繼電器&#xff1b;JDY-1220B電壓繼電器&#xff1b; JDY-1100AW電壓繼電器&#xff1b;JDY-110…

服務器數據恢復—用raid6陣列磁盤組建raid5陣列如何恢復原raid數據?

服務器存儲數據恢復環境&#xff1a; 華為OceanStor 5800存儲&#xff0c;該存儲中有一組由10塊硬盤組建的raid6磁盤陣列&#xff0c;供企業內部使用&#xff0c;服務器安裝linux操作系統EXT3文件系統&#xff0c;劃分2個lun。 服務器存儲故障&#xff1a; 管理員發現存儲中rai…

JavaScript的學習之dom的查詢(一)

一、獲得元素 通過document對象調用&#xff1a; getElementById()&#xff1a;通過id屬性獲取一個元素節點對象getElementsByTagName()&#xff1a;通過標簽名獲取一組元素節點對象getElementsByName()&#xff1a;通過name屬性來獲取一組元素節點對象 核心學習代碼 <scrip…

記錄一次即將出現的釣魚新方式

釣魚通常是內網滲透過程中的最為常見的入口方式&#xff0c;但是隨著藍隊人員溯源反制思路開闊&#xff0c;入侵排查能力提升&#xff0c;釣魚也越來越困難&#xff0c;這里就記一種不同尋常的釣魚方式。 pip install 的執行流程&#xff1a; 先獲取到遠端的服務器地址 url 比…

node.js 面試題 1

### 明天要去面試了 今天晚上突擊一下node.js 什么是Node.js&#xff1f;它有什么特點&#xff1f; Node.js是一個基于Chrome V8引擎的JavaScript運行環境&#xff0c;它允許在服務器端運行JavaScript代碼。它的特點包括單線程、非阻塞I/O、事件驅動等 …

dispatch_after

dispatch_after dispatch_after dispatch_after dispatch_after函數并不是延遲對應時間后立即執行block塊中的操作&#xff0c;而是將任務追加到對應隊列中&#xff0c;考慮到隊列阻塞等情況&#xff0c;所以這個任務從加入隊列到真正執行的時間是不準確的。 dispatch_after(…

Kubernetes CSI livenessprobe探活

Kubernetes CSI livenessprobe探活 要實現一個Kubernetes CSI的livenessprobe探活&#xff0c;可以有以下三種方法&#xff1a; HttpServer 1、在CSI中實現一個簡單的HttpServer&#xff0c;暴露探活接口&#xff1b; GRPC探測 2、CSI鏡像中&#xff0c;增加grpcurl命令&a…

單目標應用:基于吸血水蛭優化器(Blood-Sucking Leech Optimizer,BSLO)的微電網優化(MATLAB代碼)

一、微電網模型介紹 微電網多目標優化調度模型簡介_vmgpqv-CSDN博客 參考文獻&#xff1a; [1]李興莘,張靖,何宇,等.基于改進粒子群算法的微電網多目標優化調度[J].電力科學與工程, 2021, 37(3):7 二、吸血水蛭優化器求解微電網 2.1算法簡介 吸血水蛭優化器&#xff08;B…

【Java Web】Tomcat服務器

目錄 一、Tomcat是什么 二、Tomcat安裝 三、Tomcat相關目錄 四、Web項目標準目錄結構規范 五、Tomcat項目部署方式 六、IDEA關聯本地Tomcat 七、HTTP協議 7.1 http的交互方式 7.1.1 http長連接和短連接 7.1.2 http1.1緩存機制 7.2 http數據報文格式 八、常見響應狀態碼 一、Tom…

印刷企業數字工廠管理系統如何保障產品質量

一、引言 隨著信息技術的迅猛發展&#xff0c;印刷行業也迎來了數字化轉型的浪潮。數字工廠管理系統作為這一轉型的核心工具&#xff0c;不僅在提高生產效率、優化資源配置方面發揮了重要作用&#xff0c;更在保障產品質量上扮演著關鍵角色。本文將深入探討印刷企業數字工廠管…

瀏覽器擴展V3開發系列之 chrome.contextMenus 右鍵菜單的用法和案例

【作者主頁】&#xff1a;小魚神1024 【擅長領域】&#xff1a;JS逆向、小程序逆向、AST還原、驗證碼突防、Python開發、瀏覽器插件開發、React前端開發、NestJS后端開發等等 chrome.contextMenus 允許開發者向瀏覽器的右鍵菜單添加自定義項。 在使用 chrome.contextMenus 之前…

本地讀取classNames txt文件

通過本地讀取classNames,來減少程序修改代碼,提高了程序的拓展性和自定義化。 步驟: 1、輸入本地路徑,分割字符串。 2、將className按順序放入vector容器中。 3、將vector賦值給classNmaes;獲取classNames.size(),賦值給CLASSES;這樣,類別個數和類別都已經賦值完成。…

Python | Leetcode Python題解之第199題二叉樹的右視圖

題目&#xff1a; 題解&#xff1a; class Solution:def rightSideView(self, root: TreeNode) -> List[int]:rightmost_value_at_depth dict() # 深度為索引&#xff0c;存放節點的值max_depth -1stack [(root, 0)]while stack:node, depth stack.pop()if node is not…

第N8周:seq2seq翻譯實戰-Pytorch復現

&#x1f368; 本文為&#x1f517;365天深度學習訓練營 中的學習記錄博客&#x1f356; 原作者&#xff1a;K同學啊 | 接輔導、項目定制 一、前期準備 from __future__ import unicode_literals, print_function, division from io import open import unicodedata import s…

什么是堡壘機(運維審計系統)?

一、堡壘機是什么 1.1 堡壘機的來由 堡壘機是從跳板機&#xff08;也叫前置機&#xff09;的概念演變過來的。早在2000年左右的時候&#xff0c;一些中大型企業為了能對運維人員的遠程登錄進行集中管理&#xff0c;會在機房部署一臺跳板機。 跳板機其實就是一臺lunix/windows…