国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Vue新一代狀態(tài)管理工具Pinia的具體使用

3403771864 / 944人閱讀

  很多人都在問 pinia是什么?其實(shí)它是一個(gè)類似的插件,是vuex的最新一代的輕量級狀態(tài)管理插件,建議安利在很多新項(xiàng)目中其中pinia。

  Pinia 的優(yōu)點(diǎn)

  簡便,存儲和組件變得很類似,你可以輕松寫出優(yōu)雅的存儲。

  類型安全,通過類型推斷,可以提供自動完成的功能。

  vue devtools 支持,可以方便進(jìn)行調(diào)試。

  Pinia 支持?jǐn)U展,可以非常方便地通過本地存儲,事物等進(jìn)行擴(kuò)展。

  模塊化設(shè)計(jì),通過構(gòu)建多個(gè)存儲模塊,可以讓程序自動拆分它們。

  非常輕巧,只有大約 1kb 的大小。

  服務(wù)器端渲染支持。

  起步安裝

  npm i pinia

  核心語法

  pinia的核心語法有State,Getters,Actions,Plugins以及Stores outside of components(在組件外進(jìn)行調(diào)用)。可以發(fā)現(xiàn)跟vuex4相比,pinia少了一個(gè)Mutation,在pinia中,是直接使用actions去做狀態(tài)的修改。在actions中以前我們是通過state.去獲得狀態(tài),而在這里可以直接通過this. 獲取狀態(tài)

  可以在src下新建一個(gè)store文件夾 用來存放pinia相關(guān)的東西

  index.ts
  import { defineStore } from 'pinia'
  export const useCounterStore = defineStore('counter', {
  state: () => {
  return { count: 0 }
  },
  // could also be defined as
  // state: () => ({ count: 0 })
  actions: {
  increment() {
  this.count++
  },
  },
  })

   訪問state

  我們可以直接通過state.訪問

  const store = useStore()
  store.counter++

  使用Getters

  要注意,在pinia中,Getters和state里面不能使用相同的名字

  export const useStore = defineStore('main', {
  state: () => ({
  counter: 0,
  }),
  getters: {
  doubleCount: (state) => state.counter * 2,
  },
  })

    Actions

   定義和處理業(yè)務(wù)邏輯

  export const useStore = defineStore('main', {
  state: () => ({
  counter: 0,
  }),
  actions: {
  increment() {
  this.counter++
  },
  randomizeCounter() {
  this.counter = Math.round(100 * Math.random())
  },
  },
  })

    Pinia實(shí)戰(zhàn)-登錄狀態(tài)的管理

  1、新建store文件,在下面index.ts中編輯pinia的使用:

  2、在state中定義了isAuthenticated表示登錄狀態(tài),對象user中存放登錄的用戶信息,初始狀態(tài)為空

  在actions中進(jìn)行定義,setAuth方法判斷isAuth的值控制用戶的登錄狀態(tài),setUser方法將用戶的信息寫入user中

  import { defineStore } from 'pinia'
  import {userType} from '../utils/types'
  export const useAuthStore = defineStore('auth', {
  state: () => {
  return { isAuthenticated:false,user: {} }
  },
  getters: {
  getAuthenticated: (state) => state.isAuthenticated,
  getUser: (state) => state.user,
  },
  actions: {
  setAuth(isAuth:boolean){
  if(isAuth){
  this.isAuthenticated = isAuth;
  }else {
  this.isAuthenticated = false;
  }
  },
  setUser(user: userType | null){
  if(user){
  this.user = user;
  }else {
  this.user = {}
  }
  }
  },
  })

  定義好了pinia,然后去登錄界面使用

  login.vue: 這里我就只展示使用pinia的部分了

  首先要引入我們在pinia中定義的東西

  import { useAuthStore } from "../store";
  const store = useAuthStore();

  解析token之后,信息保存在decode之中,然后直接通過store的setAuth和setUser方法傳入對應(yīng)的參數(shù)

  // 解析token
  const decode: userType = jwt_decode(token);
  store.setAuth(!!decode);
  store.setUser(decode);

    效果實(shí)現(xiàn)

  在沒有登錄的時(shí)候,也就是還沒有token,我們查看控制臺vue:

  可以看到下圖登錄狀態(tài)為false,用戶信息user中也為空

  然后我們點(diǎn)擊登錄,此時(shí)token已經(jīng)保存,然后查看控制臺

  可以看到,用戶的信息以及登錄狀態(tài)都獲取到了

    同 vuex 的比較

  Pinia 最初是為了探索 Vuex 下一次迭代可能會是什么樣子,結(jié)合了 Vuex 5 核心團(tuán)隊(duì)討論中的許多想法。最終,我們意識到 Pinia 已經(jīng)實(shí)現(xiàn)了我們在 Vuex 5 中想要的大部分內(nèi)容,并決定實(shí)現(xiàn)它取而代之的是新的建議。

  與 Vuex 相比,Pinia 提供了一個(gè)更簡單的 API,具有更少的操作,提供了 Composition-API 風(fēng)格的 API,最重要的是,在與 TypeScript 一起使用時(shí)具有可靠的類型推斷支持。


文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/127605.html

相關(guān)文章

  • Vue 實(shí)現(xiàn)網(wǎng)易云音樂 WebApp

    摘要:基于等開發(fā)一款移動端音樂,界面參考了安卓版的網(wǎng)易云音樂布局適配常見移動端。圖標(biāo)使用阿里巴巴圖標(biāo)庫,中間的唱片旋轉(zhuǎn)動畫使用了實(shí)現(xiàn)。搜索功能實(shí)現(xiàn)功能搜索歌手歌單歌曲熱門搜索數(shù)據(jù)節(jié)流上拉刷新保存搜索記錄。 基于 Vue(2.5) + vuex + vue-router + vue-axios +better-scroll + Scss + ES6 等開發(fā)一款移動端音樂 WebApp,UI ...

    Karuru 評論0 收藏0
  • Vue3實(shí)現(xiàn)刷新頁面局部內(nèi)容示例代碼

      可以用實(shí)現(xiàn)局部組件(dom)的重新渲染可以實(shí)現(xiàn)頁面的局部刷新。有一個(gè)最簡單辦法,我們可以用Vue中的v-if指令來實(shí)現(xiàn)。  我們的思路是:除了上述用Vue中的v-if指令來實(shí)現(xiàn),我們也可以用另一個(gè)方法就是新建一個(gè)空白組件,需要刷新局部頁面時(shí)跳轉(zhuǎn)至這個(gè)空白組件頁面,然后在空白組件內(nèi)的beforeRouteEnter守衛(wèi)中又跳轉(zhuǎn)回原來的頁面。  如下圖所示,在Vue3.X中不僅可以實(shí)現(xiàn)點(diǎn)擊刷新,按...

    3403771864 評論0 收藏0
  • vue全家桶網(wǎng)易嚴(yán)選,體驗(yàn)網(wǎng)易嚴(yán)選購物流程

    摘要:項(xiàng)目預(yù)覽線上訪問或者二維碼掃描項(xiàng)目描述全家桶模仿網(wǎng)易嚴(yán)選瀏覽,購物流程,好的生活,沒那么貴。對狀態(tài)管理有了進(jìn)一步的了解在項(xiàng)目過程中每一個(gè)組件都應(yīng)用了這個(gè)組件,切換的時(shí)候每次當(dāng)前選中的選項(xiàng)都是第一項(xiàng)成選中狀態(tài),究其原因的他們的狀態(tài)沒有共享。 項(xiàng)目預(yù)覽 showImg(https://segmentfault.com/img/remote/1460000009660678?w=1481&h...

    alaege 評論0 收藏0
  • 面向未來編程(Future-Oriented Programming),建設(shè)未來 Vue 生態(tài)

    摘要:狀態(tài)管理社區(qū)當(dāng)前最流行的狀態(tài)管理方案分別是單向數(shù)據(jù)流的和基于的。目前的現(xiàn)狀主要是由于并沒有將其底層的曝光出來。是一個(gè)開源項(xiàng)目,完全兼容的,擁簇面向未來編程,致力于加速未來生態(tài)圈的建設(shè)。 概要 Vue 的作者尤雨溪最近公布了 3.0 版本最重要的 RFC Vue Function-based API。在 React 推出 Hooks 后不久,Vue 社區(qū)也迎來了自己的組件邏輯復(fù)用機(jī)制。 ...

    J4ck_Chan 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<