国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Vue最新狀態(tài)管理工具Pinia——徹底搞懂Pinia是什么

這篇具有很好參考價值的文章主要介紹了Vue最新狀態(tài)管理工具Pinia——徹底搞懂Pinia是什么。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

知識回調(diào)(不懂就看這兒?。?/h2>
知識專欄 專欄鏈接
Vuex知識專欄 https://blog.csdn.net/xsl_hr/category_12158336.html?spm=1001.2014.3001.5482
Vuex官方文檔 https://vuex.vuejs.org/zh/
Pinia官方文檔 https://pinia.web3doc.top/

場景復(fù)現(xiàn)

最近在前端的深入學(xué)習(xí)過程中,接觸了與狀態(tài)管理相關(guān)的內(nèi)容,涉及到與vue2適配的vuex與vue3適配的pinia,因此計劃分別用幾篇文章總結(jié)一下最近的學(xué)習(xí)筆記,從了解到實際運用vue的狀態(tài)管理工具。

本期文章將介紹pinia的入門知識

什么是pinia

pinia其實就是vuex5,這是pinia其實就是Vuex5,這是尤雨溪老師在直播中提到的,所以它倆是一致的東西,只是vuex第五個版本之后就叫pinia了。
Vue最新狀態(tài)管理工具Pinia——徹底搞懂Pinia是什么

pinia相比vuex的優(yōu)勢

Vue最新狀態(tài)管理工具Pinia——徹底搞懂Pinia是什么

pinia相比vuex4之前的優(yōu)勢

  • mutations 不再存在。帶來了 devtools集成??!
  • 無需創(chuàng)建自定義復(fù)雜包裝器來支持 TypeScript,所有內(nèi)容都是類型化的,并且 API 的設(shè)計方式盡可能利用 TS 類型推斷。
  • 不再需要注入、導(dǎo)入函數(shù)、調(diào)用函數(shù)、享受自動完成功能!
  • 無需動態(tài)添加 Store,默認(rèn)情況下它們都是動態(tài)的!
  • 不再有 modules 的嵌套結(jié)構(gòu)。您仍然可以通過在另一個 Store 中導(dǎo)入和 使用 來隱式嵌套 Store,但 Pinia 通過設(shè)計提供平面結(jié)構(gòu),同時仍然支持 Store 之間的交叉組合方式。 您甚至可以擁有 Store 的循環(huán)依賴關(guān)系。
  • 沒有 命名空間模塊。鑒于 Store 的扁平架構(gòu),“命名空間” Store 是其定義方式所固有的,您可以說所有 Store 都是命名空間的。

總的來說,如果你是一個vue3和TypeScript的重度愛好者,那么pinia可以直接閉眼使用了,相對之前版本的vuex,pinia絕對會給你帶來意想不到的體驗?。。?/p>

為什么要使用pinia?

Pinia 是 Vue 的存儲庫,它允許您跨組件/頁面共享狀態(tài)。 如果您熟悉 Composition API,您可能會認(rèn)為您已經(jīng)可以通過一個簡單的 export const state = reactive({})。這對于單頁應(yīng)用程序來說是正確的,但如果它是服務(wù)器端呈現(xiàn)的,會使您的應(yīng)用程序暴露于安全漏洞。 但即使在小型單頁應(yīng)用程序中,您也可以從使用 Pinia 中獲得很多好處:

Vue最新狀態(tài)管理工具Pinia——徹底搞懂Pinia是什么

基本示例

下面我們來看看在api方面使用pinia的例子:??????
首先創(chuàng)建一個store實例,寫入基礎(chǔ)的數(shù)據(jù)和邏輯

// stores/counter.js
import { defineStore } from 'pinia'

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

然后在一個組件中使用store實例:

import { useCounterStore } from '@/stores/counter'

export default {
  setup() {
    const counter = useCounterStore()
    counter.count++
    counter.$patch({ count: counter.count + 1 })
    // 或使用 action 代替
    counter.increment()
  },
}

當(dāng)然,我們還可以用一個函數(shù)來定義一個更高級的store:

export const useCounterStore = defineStore('counter', () => {
  const count = ref(0)
  function increment() {
    count.value++
  }
  return { count, increment }
})

下面我們來看看使用pinia的一個完整示例:

import { defineStore } from 'pinia'

export const todos = defineStore('todos', {
  state: () => ({
    /** @type {{ text: string, id: number, isFinished: boolean }[]} */
    todos: [],
    /** @type {'all' | 'finished' | 'unfinished'} */
    filter: 'all',
    // type 會自動推斷為 number
    nextId: 0,
  }),
  getters: {
    finishedTodos(state) {
      return state.todos.filter((todo) => todo.isFinished)
    },
    unfinishedTodos(state) {
      return state.todos.filter((todo) => !todo.isFinished)
    },
    /**
     * @returns {{ text: string, id: number, isFinished: boolean }[]}
     */
    filteredTodos(state) {
      if (this.filter === 'finished') {
        // 自動調(diào)用其他 getter 
        return this.finishedTodos
      } else if (this.filter === 'unfinished') {
        return this.unfinishedTodos
      }
      return this.todos
    },
  },
  actions: {
    // 任何數(shù)量的參數(shù),返回一個 Promise 或者不返回
    addTodo(text) {
      // 你可以直接改變狀態(tài)
      this.todos.push({ text, id: this.nextId++, isFinished: false })
    },
  },
})

以上就是關(guān)于實現(xiàn)pinia一些基礎(chǔ)知識的分享,相信看完這篇文章的小伙伴們一定能運用這些方法在項目開發(fā)中。當(dāng)然,可能有不足的地方,歡迎大家在評論區(qū)留言指正!

下期文章將介紹vue最新狀態(tài)管理工具Pinia的安裝上手~
感興趣的小伙伴可以訂閱本專欄,方便后續(xù)了解學(xué)習(xí)~
覺得這篇文章有用的小伙伴們可以點贊?收藏?關(guān)注哦~

Vue最新狀態(tài)管理工具Pinia——徹底搞懂Pinia是什么文章來源地址http://www.zghlxwxcb.cn/news/detail-435392.html

到了這里,關(guān)于Vue最新狀態(tài)管理工具Pinia——徹底搞懂Pinia是什么的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Vue使用 Pinia 進(jìn)行狀態(tài)管理

    Pinia 是一個適用于 Vue.js 的狀態(tài)管理庫,它采用了組合式 API 的理念,使得狀態(tài)管理變得更加簡單、直觀和靈活。與傳統(tǒng)的 Vuex 相比,Pinia 提供了更好的 TypeScript 支持,同時也更加適合大型應(yīng)用程序和復(fù)雜狀態(tài)邏輯的管理。 首先,我們需要在 Vue 項目中安裝 Pinia。你可以通過

    2024年02月13日
    瀏覽(36)
  • 【Vue全家桶】Pinia狀態(tài)管理

    【Vue全家桶】Pinia狀態(tài)管理

    ??這里是前端程序員小張! ??人海茫茫,感謝這一秒你看到這里。希望我的文章對你的有所幫助! ??愿你在未來的日子,保持熱愛,奔赴山海! Pinia開始于大概2019年,其目的是設(shè)計一個擁有 組合式 API 的 Vue 狀態(tài)管理庫 目前同時兼容Vue2、Vue3,也并不要求你使用Compositio

    2023年04月09日
    瀏覽(101)
  • Vue--》探索Pinia:Vue狀態(tài)管理的未來

    Vue--》探索Pinia:Vue狀態(tài)管理的未來

    目錄 Pinia的講解與使用 Pinia的安裝與使用 store數(shù)據(jù)操作 解構(gòu)store數(shù)據(jù)

    2024年02月05日
    瀏覽(19)
  • zustand狀態(tài)管理工具(react)

    分別創(chuàng)建文件continue.js、shoes.js 1、continue.js 2、shoes.js

    2024年01月25日
    瀏覽(59)
  • vue3學(xué)習(xí)-Pinia狀態(tài)管理

    定義一個Store 這個 name ,也稱為 id ,是必要的,Pinia 使用它來將 store 連接到 devtools。 將返回的函數(shù)命名為 use… 是跨可組合項的約定,以使其符合你的使用習(xí)慣。 使用 store 一旦 store 被實例化,你就可以直接在 store 上訪問 state 、 getters 和 actions 中定義的任何屬性 store 是一

    2024年02月14日
    瀏覽(15)
  • Vue | Vue.js 全家桶 Pinia狀態(tài)管理

    Vue | Vue.js 全家桶 Pinia狀態(tài)管理

    ??? Vue?.js專欄:Node.js Vue.js 全家桶 Pinia狀態(tài)管理 ????? 個人簡介:一個不甘平庸的平凡人?? ? 個人主頁:CoderHing的個人主頁 ?? 格言: ?? 路漫漫其修遠(yuǎn)兮,吾將上下而求索?? ?? 你的一鍵三連是我更新的最大動力?? 目錄 一、Pinia和Vuex的對比 什么是Pinia呢? Pina和

    2024年01月16日
    瀏覽(119)
  • vue3 快速入門系列 —— 狀態(tài)管理 pinia

    vue3 快速入門系列 —— 狀態(tài)管理 pinia

    其他章節(jié)請看: vue3 快速入門 系列 vue3 狀態(tài)管理這里選擇 pinia。 雖然 vuex4 已支持 Vue 3 的 Composition API,但是 vue3 官網(wǎng)推薦新的應(yīng)用使用 pinia —— vue3 pinia redux、mobx、vuex、pinia都是集中式狀態(tài)管理工具。與之對應(yīng)的就是分布式。 Pinia 符合直覺 的 Vue.js 狀態(tài)管理庫 甚至讓你忘

    2024年04月26日
    瀏覽(16)
  • react狀態(tài)管理工具reduxjs/toolkit用法

    安裝?npm install @reduxjs/toolkit 1.創(chuàng)建一個名為 counterSlice.js 的文件,用于處理計數(shù)器模塊的狀態(tài): 2.創(chuàng)建一個名為 userSlice.js 的文件,用于處理用戶信息模塊的狀態(tài): 3.創(chuàng)建一個Redux store并將這些模塊整合起來。創(chuàng)建一個名為 store.js 的文件: 4.在你的應(yīng)用程序的入口處,將store與

    2024年02月15日
    瀏覽(15)
  • vue:狀態(tài)管理庫及其部分原理(Vuex、Pinia)

    多組件的狀態(tài)共享問題: 當(dāng)多個組件需要訪問和修改相同的數(shù)據(jù)時,我們需要在組件之間傳遞 props或者使用事件總線。當(dāng),應(yīng)用就會變得難以維護(hù)和調(diào)試。 多組件狀態(tài)同步問題: 當(dāng)一個組件修改了狀態(tài),其他組件可能無法立即得知該變化。 狀態(tài)變更的追蹤問題: 無法追蹤

    2024年01月19日
    瀏覽(28)
  • 深入 Pinia:從代碼出發(fā)探索 Vue 狀態(tài)管理的奧秘

    深入 Pinia:從代碼出發(fā)探索 Vue 狀態(tài)管理的奧秘

    ?? 項目地址:https://github.com/mk965/read-pinia ??????? 本節(jié)代碼:https://github.com/mk965/read-pinia/tree/article_1 ??源碼地址: github.com/vuejs/pinia ??打包文件: rollup.config.js ??入口文件: packages/pinia/src/index.ts 將 pinia/packages/pinia/src 目錄下的所有文件復(fù)制到我們之前生成項目的 /src

    2023年04月25日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包