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

vue3使用pinia和pinia-plugin-persist做持久化存儲(chǔ)

這篇具有很好參考價(jià)值的文章主要介紹了vue3使用pinia和pinia-plugin-persist做持久化存儲(chǔ)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

插件和版本
vue3使用pinia和pinia-plugin-persist做持久化存儲(chǔ),vue3,pinia,數(shù)據(jù)持久化

1、安裝依賴

npm i pinia // 安裝 pinia
npm i pinia-plugin-persist // 安裝持久化存儲(chǔ)插件

2、main.js引入

vue3使用pinia和pinia-plugin-persist做持久化存儲(chǔ),vue3,pinia,數(shù)據(jù)持久化


import App from './App.vue'
const app = createApp(App)

//pinia
import { createPinia } from 'pinia'
import piniaPersist from 'pinia-plugin-persist' //持久化插件
const pinia = createPinia()
pinia.use(piniaPersist)
app.use(pinia)

app.mount('#app')


3、在src下新建store文件,在store文件內(nèi)新增home.js:

vue3使用pinia和pinia-plugin-persist做持久化存儲(chǔ),vue3,pinia,數(shù)據(jù)持久化

src/store/home.js(可直接復(fù)制)

import { defineStore } from 'pinia'
// useMain  可以是 useUser、useCart 之類的名字 返回的函數(shù)統(tǒng)一使用useXXX作為命名方案,這是約定的規(guī)矩
// defineStore('main',{..}) 在devtools 就使用 main 這個(gè)名
/*defineStore 是需要傳參數(shù)的,其中第一個(gè)參數(shù)是id,就是一個(gè)唯一的值,
簡單點(diǎn)說就可以理解成是一個(gè)命名空間.
第二個(gè)參數(shù)就是一個(gè)對(duì)象,里面有三個(gè)模塊需要處理,
第一個(gè)是 state,第二個(gè)是 getters,第三個(gè)是 actions。
*/
export const useMain = defineStore('main', {
    // 相當(dāng)于data
    state: () => {
        return {
          // 所有這些屬性都將自動(dòng)推斷其類型,如果推斷失敗可以試下 as xxx
          counter: 0,
          name: 'Eduardo',
          objPer:{
            age:18,
            like: '唱跳rap'
          }
        }
    },
    // 相當(dāng)于計(jì)算屬性
    getters: {
        doubleCount: (state) => {
            return state.counter * 2
        },
    },
    // 相當(dāng)于vuex的 mutation + action,可以同時(shí)寫同步和異步的代碼
    actions: {
        increment() {
          //this.是store實(shí)例
          this.counter++
        },
        randomizeCounter(num) {
            setTimeout(() => {
                //this.是store實(shí)例
                // this.counter = Math.round(100 * Math.random())
                this.counter = num
            }, 0);
        },
    },

    //配合pinia-plugin-persist插件 持久化 默認(rèn)存儲(chǔ)到 sessionStorage ,key 為 store 的 id
    persist: {
      enabled: true,
    }
})

4、在頁面A內(nèi)使用獲取值以及修改值(可直接復(fù)制)

<template>
  <div>{{ name }}</div>
  <div>counter:{{ counter }}</div>
  <div>doubleCount:{{ doubleCount }}</div>
  <div>objPer:{{ objPer }}</div>
  <a-button @click="changeCounter">修改counter</a-button>
  <br>
  <a-button type="primary" @click="main.increment()">counter++</a-button>
  <br>
  <a-button @click="amend()">修改多個(gè)</a-button>
</template>
<script setup lang='ts'>

//引入想要的pinia文件 {} 里面就是對(duì)應(yīng)導(dǎo)出的名字
import { useMain } from '../store/home'
import { storeToRefs } from 'pinia';

const main = useMain()
// 解構(gòu)main里面的state和getters的數(shù)據(jù),
// 使用storeToRefs解構(gòu)才有響應(yīng)式,響應(yīng)式可以直接修改數(shù)據(jù),不過這我只用來渲染
let { counter, name, doubleCount, objPer } = storeToRefs(main)

//(常用方法三種)
//常用方法一: 使用數(shù)據(jù)
console.log(counter.value);
//使用方法(方法目前不能解構(gòu))
main.increment()
console.log(counter.value);

// 常用方法二:修改數(shù)據(jù)
counter.value = 9999
console.log(counter.value);

objPer.value = {
  age:1,
  like:'哎呦 你干嘛~'
}

//常用方法三:
//進(jìn)階使用$patch,多個(gè)修改
const amend = () => {
  main.$patch((state) => {
    state.counter += 10;
    state.name = '張三'
    state.objPer = {
      age:11,
      like:'雞你太美~'
    }
  })
}

function changeCounter(){
  main.randomizeCounter(Math.round(100 * Math.random()))
}

</script>

5、在頁面B內(nèi)引入并使用和查看值(可直接復(fù)制)


<template>

  <div>objPer:{{ objPer }}</div>
  <button @click="resetStore">重置pinia</button>
</template>
<script>
//引入想要的pinia文件 {} 里面就是對(duì)應(yīng)導(dǎo)出的名字
import { useMain } from '../../store/home'
import { storeToRefs } from 'pinia';

const main = useMain()
// 解構(gòu)main里面的state和getters的數(shù)據(jù),
// 使用storeToRefs解構(gòu)才有響應(yīng)式,響應(yīng)式可以直接修改數(shù)據(jù),不過這我只用來渲染
let { objPer } = storeToRefs(main)


export default {
  name: 'test',
  setup () {

    // 重置pinia
    function resetStore(){
      main.$reset()
    }
    // 將變量和函數(shù)返回,以便在模版中使用
    return {
      objPer,
      resetStore
    }
  }
}
</script>


6、查看值

vue3使用pinia和pinia-plugin-persist做持久化存儲(chǔ),vue3,pinia,數(shù)據(jù)持久化
vue3使用pinia和pinia-plugin-persist做持久化存儲(chǔ),vue3,pinia,數(shù)據(jù)持久化

參考文章1
參考2
參考3文章來源地址http://www.zghlxwxcb.cn/news/detail-645759.html

到了這里,關(guān)于vue3使用pinia和pinia-plugin-persist做持久化存儲(chǔ)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • Vue3狀態(tài)管理庫Pinia——自定義持久化插件

    Vue3狀態(tài)管理庫Pinia——自定義持久化插件

    個(gè)人簡介 ?? 個(gè)人主頁: 前端雜貨鋪 ???♂? 學(xué)習(xí)方向: 主攻前端方向,正逐漸往全干發(fā)展 ?? 個(gè)人狀態(tài): 研發(fā)工程師,現(xiàn)效力于中國工業(yè)軟件事業(yè) ?? 人生格言: 積跬步至千里,積小流成江海 ?? 推薦學(xué)習(xí):??前端面試寶典 ??Vue2 ??Vue3 ??Vue2/3項(xiàng)目實(shí)戰(zhàn) ??Node.js??

    2024年02月13日
    瀏覽(30)
  • Pinia 數(shù)據(jù)持久化儲(chǔ)存(pinia-plugin-persistedstate)

    Pinia 數(shù)據(jù)持久化儲(chǔ)存(pinia-plugin-persistedstate)

    插件官網(wǎng)地址: https://prazdevs.github.io/pinia-plugin-persistedstate/guide/config.html 這里對(duì)插件的安裝就不多贅述了,放兩張官網(wǎng)的截圖 使用命令:npm i pinia-plugin-persistedstate (1)將store的state中的全部數(shù)據(jù)進(jìn)行緩存,直接在state同級(jí)下面添加persist對(duì)象 此時(shí),默認(rèn)將數(shù)據(jù)存放在瀏覽器的

    2024年02月01日
    瀏覽(29)
  • 從零開始Vue3+Element Plus后臺(tái)管理系統(tǒng)(六)——狀態(tài)管理Pinia和持久化

    從零開始Vue3+Element Plus后臺(tái)管理系統(tǒng)(六)——狀態(tài)管理Pinia和持久化

    官網(wǎng):https://pinia.vuejs.org/zh/ Pinia 是 Vue 的專屬狀態(tài)管理庫,相比Vuex更好用,優(yōu)點(diǎn)不多了說官網(wǎng)有,用起來最重要! 在應(yīng)用的根部注入創(chuàng)建的 pinia 定義store,拿用戶登錄舉個(gè)簡單例子 在src目錄新建文件夾store,然后新建文件user.ts 在Vue頁面中使用Pinia 如果我們把登錄用戶的信息

    2024年02月05日
    瀏覽(50)
  • react中使用redux-persist做持久化儲(chǔ)存

    某天下午折騰著玩的 – 筆記 安裝相關(guān)依賴 將 store 提供給應(yīng)用程序:將 Redux store 提供給根組件,以便在整個(gè)應(yīng)用程序中可以訪問到 Redux 狀態(tài) reducer 示例: 在組件中使用

    2024年02月14日
    瀏覽(26)
  • Vue3中使用pinia

    Vue3中使用pinia

    目錄 1、安裝:npm install pinia 2、創(chuàng)建store文件并配置內(nèi)部的index.js文件 3、main.js文件中配置 4、組件使用 4-1、 store.$reset()?? ?4-2 store.$patch ?5.訂閱修改 6.Getter 7、Actions 效果圖 ?點(diǎn)擊按鈕,界面變化 ?說明成功修改了pinia里面的數(shù)據(jù),且界面刷新證明這種直接修該pinia數(shù)據(jù)的方式

    2024年02月07日
    瀏覽(30)
  • vue3探索——pinia高階使用

    vue3探索——pinia高階使用

    以下是一些 Pinia 的其他高階功能: storeToRefs() :響應(yīng)式解構(gòu)倉庫,保證解構(gòu)出來的數(shù)據(jù)是響應(yīng)式的數(shù)據(jù)。 狀態(tài)持久化 :Pinia 并沒有內(nèi)置的狀態(tài)持久化功能,但你可以使用第三方庫或自定義插件來實(shí)現(xiàn)狀態(tài)的持久化。例如,你可以使用? localStorage ?或? sessionStorage ?來將狀態(tài)

    2024年02月08日
    瀏覽(29)
  • vue3項(xiàng)目中使用pinia

    vue3項(xiàng)目中使用pinia

    前言: 官網(wǎng)地址 https://pinia.vuejs.org/zh/ 中文文檔 https://pinia.web3doc.top/ pinia? ? 作為Vue.js 狀態(tài)管理庫 類型安全、可擴(kuò)展性以及模塊化設(shè)計(jì)。 甚至讓你忘記正在使用的是一個(gè)狀態(tài)庫。 優(yōu)點(diǎn): ? 優(yōu)點(diǎn) dev-tools 支持 跟蹤動(dòng)作、突變的時(shí)間線 Store 出現(xiàn)在使用它們的組件中 time travel

    2023年04月26日
    瀏覽(27)
  • Vue3 store+pinia 基本使用

    pinia是一個(gè) 狀態(tài)管理的庫 ,用于 跨組件、頁面進(jìn)行狀態(tài)共享 (這和Vuex、Redux一樣),用起來像組合式API Pinia和Vuex有什么區(qū)別 1、PInia的最初是為了探索Vuex的下一次迭代會(huì)是什么樣子,結(jié)合了Vuex核心團(tuán)隊(duì)討論中的許多想法; 2、最終,團(tuán)隊(duì)意識(shí)到Pinia已經(jīng)實(shí)現(xiàn)了Vuex5中大部分內(nèi)

    2024年02月07日
    瀏覽(39)
  • pinia在vue3中的使用

    pinia在vue3中的使用

    總結(jié): 在store文件夾中建一個(gè)pinia的文件userStore.js 1.要想使用pinia必須先引入defineStore ?這里我們使用es6的模塊化語法導(dǎo)出的 ? import { defineStore } from \\\'pinia\\\' 2.然后使用export const useUserStore = defineStore(\\\'user\\\',{}) ??defineStore 方法有兩個(gè)參數(shù),第一個(gè)參數(shù)是模塊化名字(也就相當(dāng)于身份

    2024年02月15日
    瀏覽(26)
  • Vue3中的pinia使用(收藏版)

    Vue3中的pinia使用(收藏版)

    ?? 個(gè)人網(wǎng)站:【紫陌】【筆記分享網(wǎng)】 ?? 想尋找共同學(xué)習(xí)交流、共同成長的伙伴,請(qǐng)點(diǎn)擊【前端學(xué)習(xí)交流群】 pinia 是 Vue 的存儲(chǔ)庫,它允許您跨組件/頁面共享狀態(tài)。就是和vuex一樣的實(shí)現(xiàn)數(shù)據(jù)共享。 依據(jù)Pinia官方文檔,Pinia是2019年由vue.js官方成員重新設(shè)計(jì)的新一代狀態(tài)管理

    2024年01月25日
    瀏覽(25)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包