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

前端開發(fā)小技巧 - 【Vue3 + TS】 - 在 TS + Vue3 中使用 Pinia,實現(xiàn) Pinia 的持久化,優(yōu)化Pinia(倉庫統(tǒng)一管理)

這篇具有很好參考價值的文章主要介紹了前端開發(fā)小技巧 - 【Vue3 + TS】 - 在 TS + Vue3 中使用 Pinia,實現(xiàn) Pinia 的持久化,優(yōu)化Pinia(倉庫統(tǒng)一管理)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

前言

  • ts 中使用 piniaVue3 基本一致,唯一的不同點在于,需要根據(jù)接口文檔給 state 標(biāo)注類型,也要給 actions 標(biāo)注類型;
  • 以下都是 組合式API 的寫法,選項式API 的寫法大家可以去官網(wǎng)看看;
    • Pinia;
    • 持久化插件 - pinia-plugin-persistedstate;

一、定義類型文件

  • 目標(biāo)文件:src/types/user.d.ts(這里以user.d.ts為例);
  • 代碼展示:
    export type User = {
        token: string;
        refreshToken: string;
        avatar: string; // 頭像
        mobile: string; // 脫敏手機號 - 帶星號的手機號
        account: string; // 用戶名
        id: string; // 用戶id
    };
    

二、創(chuàng)建 store

  • 目標(biāo)文件:src/stores/user.ts;
  • 代碼展示:
    import { defineStore } from 'pinia';
    import { ref } from 'vue';
    import type { User } from '@/types/user';
    
    export const useUserStore = defineStore('user', () => {
       const userInfo = ref<User>();
       
       const setUserInfo = (u: User) => {
           userInfo.value = u;
       };
       
       const delUserInfo = () => {
           // undefined 是 window 身上的一個屬性,大廠里面不推薦直接用 undefined 給變量賦值
           // void 是用來創(chuàng)建 undefined,不管它后面跟個啥,得到的都是 undefined;
           userInfo.value = void 0;
           // 上面的代碼等價于下面這個,但是上面的代碼更好
           // userInfo.value = undefined;
       }
       
       return { userInfo, setUserInfo, delUserInfo }
    });
    
  • pinia ts example,Vue3,javascript,vue.js,前端,typescript

三、實現(xiàn) Pinia 的持久化

  • 以往做法:
    • 按照以前的做法是自己手寫封裝一個函數(shù)(setStorage()、getStorage()、delStorage()),需要使用的時候進(jìn)行導(dǎo)入使用;
    • 這種做法太麻煩了,在 Vue3 中我們可以安裝一個插件,進(jìn)行配置,會自動幫我們實現(xiàn) Pinia 的持久化;

3.1、安裝 Pinia 持久化插件:

pnpm i pinia-plugin-persistedstate
yarn add pinia-plugin-persistedstate
npm i pinia-plugin-persistedstate

3.2、將插件添加到 Pinia 的實例上

  • 目標(biāo)文件:src/main.ts
  • 代碼展示:
    import { createPinia } from 'pinia';
    import persist from 'pinia-plugin-persistedstate';
    
    const pinia = createPinia();
    
    pinia.use(persist);
    

3.3、在 Store 中使用

  • defineStore() 添加第三個參數(shù)(配置對象);
  • 代碼展示:
    import { defineStore } from 'pinia';
    import { ref } from 'vue';
    import type { User } from '@/types/user';
    
    export const useUserStore = defineStore('user', () => {
       const userInfo = ref<User>();
       
       const setUserInfo = (u: User) => {
           userInfo.value = u;
       };
       
       const delUSerInfo = () => {
           // undefined 是 window 身上的一個屬性,大廠里面不推薦直接用 undefined 給變量賦值
           // void 是用來創(chuàng)建 undefined,不管它后面跟個啥,得到的都是 undefined;
           userInfo.value = void 0;
           // 上面的代碼等價于下面這個,但是上面的代碼更好
           // userInfo.value = undefined;
       }
       
       return { userInfo, setUserInfo, delUserInfo }
    }, { persist: true });
    

3.4、驗證

  • App.vue 中隨便定義兩個按鈕;模擬 登錄退出登錄;
  • useUserStore 導(dǎo)入到 App.vue 中,調(diào)用 setUserInfo() 和 delUserInfo(),查看 localStorage;

四、倉庫(store)統(tǒng)一管理

  • 倉庫(store)的統(tǒng)一管理分兩步:
    • pinia獨立維護(hù);
    • 倉庫(store)統(tǒng)一導(dǎo)出;

4.1、pinia獨立維護(hù)

  • 以往:
    • 初始化代碼都在 main.ts 中,倉庫代碼在 stores 文件夾中,代碼分散職能不單一;
  • 優(yōu)化處理
    • stores 統(tǒng)一維護(hù),在 stores/index.ts 中完成 pinia 的初始化,交付 main.ts 使用;
  • 代碼展示:
    • 目標(biāo)文件:src/stores/index.ts
      import { createPinia } from 'pinia';
      import persist from 'pinia-plugin-persistedstate';
      
      const pinia = createPinia();
      
      pinia.use(persist);
      
      export default pinia;
      
    • 目標(biāo)文件:src/main.ts;
      import { createApp } from 'vue';
      import pinia from '@/stores';
      import App from './App.vue';
      
      const app = createApp(App);
      app.use(pinia);
      app.mount('#app');
      

4.2、倉庫(store)統(tǒng)一導(dǎo)出

  • 以往:
    • 使用一個倉庫 import { useUSerStore } from '@/stores/user.ts'; 不同倉庫路徑不一致;
    • 在每次導(dǎo)入的時候,都需要使用不同的路徑,不方便;
  • 優(yōu)化處理
    • stores/index.ts 統(tǒng)一導(dǎo)出,導(dǎo)入路徑統(tǒng)一 @/stores,而且倉庫維護(hù)在 src/stores/modules 中;
  • 代碼展示:
    • src/modules 下面有兩個模塊 user、cart 這兩個;
    • 目標(biāo)文件:src/stores/index.ts
      import { createPinia } from 'pinia';
      import persist from 'pinia-plugin-persistedstate';
      
      const pinia = createPinia();
      
      pinia.use(persist);
      
      export default pinia;
      
      // import { useUserStore } from './modules/user';
      // import { useCartStore } from './modules/cart';
      // export { useUserStore, useCartStore };
      
      // 對上面的代碼進(jìn)行簡化處理
      
      // 將 user 模塊中的所有的按需導(dǎo)出 在當(dāng)前文件中進(jìn)行按需導(dǎo)出
      export * from './modules/user';
      export * from './modules/cart';
      
    • 在別的文件使用的時候,直接使用 import { xxx } from '@/store'; 進(jìn)行導(dǎo)入即可;

文章來源地址http://www.zghlxwxcb.cn/news/detail-845780.html

到了這里,關(guān)于前端開發(fā)小技巧 - 【Vue3 + TS】 - 在 TS + Vue3 中使用 Pinia,實現(xiàn) Pinia 的持久化,優(yōu)化Pinia(倉庫統(tǒng)一管理)的文章就介紹完了。如果您還想了解更多內(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)文章

  • 前端新手Vue3+Vite+Ts+Pinia+Sass項目指北系列文章 —— 第十二章 常用工具函數(shù) (Utils配置)

    前端新手Vue3+Vite+Ts+Pinia+Sass項目指北系列文章 —— 第十二章 常用工具函數(shù) (Utils配置)

    在項目開發(fā)中,我們經(jīng)常會使用一些工具函數(shù),也經(jīng)常會用到例如 loadsh 等工具庫,但是這些工具庫的體積往往比較大,如果項目本身已經(jīng)引入了這些工具庫,那么我們就沒有必要再引入一次,所以我們需要自己封裝一些工具函數(shù),來簡化我們的開發(fā)。 在 src/utils 目錄下創(chuàng)建

    2024年02月20日
    瀏覽(28)
  • 使用vue3 + TS + Pinia + Vant4 + vite搭建商城H5項目框架

    使用vue3 + TS + Pinia + Vant4 + vite搭建商城H5項目框架

    本文主要將如何利用搭建一個初始化的商城H5項目框架。初始化階段使用的技術(shù)棧有:vue3.2、vue-router、?TS 、 Pinia 、 Vant4、Less、vite ????????????????????????node -v 檢測是否有安裝node.js,未安裝請先去官網(wǎng)安裝node.js ? ? ? ? 終端輸入:?npm?init vite ????????自定

    2024年02月12日
    瀏覽(96)
  • Vue3狀態(tài)管理庫Pinia——自定義持久化插件

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

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

    2024年02月13日
    瀏覽(30)
  • 使用ExcelJS實現(xiàn)excel的前端導(dǎo)出功能(Vue3+TS)

    ExcelJS :讀取,操作并寫入電子表格數(shù)據(jù)和樣式到 XLSX 和 JSON 文件。一個 Excel 電子表格文件逆向工程項目。 github中文文檔:https://github.com/exceljs/exceljs/blob/master/README_zh.md ?封裝excel.ts工具文件 表格頁面調(diào)用excel工具文件?

    2024年02月14日
    瀏覽(29)
  • vue3 + TS + elementplus + pinia實現(xiàn)后臺管理系統(tǒng)左側(cè)菜單聯(lián)動實現(xiàn) tab根據(jù)路由切換聯(lián)動內(nèi)容

    vue3 + TS + elementplus + pinia實現(xiàn)后臺管理系統(tǒng)左側(cè)菜單聯(lián)動實現(xiàn) tab根據(jù)路由切換聯(lián)動內(nèi)容

    效果圖: ?home.vue頁面代碼 left.vue頁面代碼 tab.vue頁面代碼 pinia里面的代碼 安裝 使用插件 ?在main.ts中注冊 路由代碼 我把代碼放git上了,有需要的自行拉取 https://gitee.com/Flechazo7/vue3.git

    2024年02月09日
    瀏覽(28)
  • vue3+ts+pinia整合websocket

    先有實時數(shù)據(jù)需要展示. 由于設(shè)備量極大且要對設(shè)備參數(shù)實時記錄展示.axios空輪詢不太適合. 選擇websocket長連接通訊. 使用pinia原因是pinia具備共享數(shù)據(jù)性質(zhì).可以作為消息隊列緩存數(shù)據(jù),降低渲染壓力.同時方便多個頁面或組件獲取websocket數(shù)據(jù) 安裝pinia 注冊pinia不再詳細(xì)敘述,自行

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

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

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

    2024年02月05日
    瀏覽(50)
  • vue3+ts+pinia+vite一次性全搞懂

    前提是所處vue環(huán)境為vue3,如果失敗就查看一下環(huán)境是否為vue2,然后刪除vue2,安裝vue3 這是我報過的錯

    2024年02月01日
    瀏覽(23)
  • 微信小程序uniapp+vue3+ts+pinia的環(huán)境搭建

    一.創(chuàng)建uniapp項目 通過vue-cli創(chuàng)建 二.安裝依賴: 1.pnpm i 2.運行項目: 將package.json的 3.導(dǎo)入微信小程序開發(fā)工具 打開微信開發(fā)者工具, 導(dǎo)入 distdevmp-weixin 運行 三. TS 類型校驗 在tsconfig.json文件中\(zhòng)\\"compilerOptions\\\"配置項內(nèi)添加\\\"ignoreDeprecations\\\": “5.0” 額外配置Ts類型校驗: 安裝類型

    2024年04月10日
    瀏覽(98)
  • Vite4+Typescript+Vue3+Pinia 從零搭建(2) - ts配置

    項目代碼同步至碼云 weiz-vue3-template 關(guān)于tsconfig的配置字段可查看其他文檔,如 typeScript tsconfig配置詳解 文件修改如下: 修改文件如下: 新建文件夾 types ,用來存放類型定義。比如新建 index.d.ts : 后續(xù)也可以新增其他文件,比如 global.d.ts 存放全局定義, router.d.ts 存放路由定

    2024年02月05日
    瀏覽(102)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包