iT邦幫忙

2022 iThome 鐵人賽

DAY 9
0

狀態管理有點像是 cookielocalStorage,可是又多了更多操作可以用,讓你再切換頁面時可以使用相同的變數。

用來使用這個功能的套件叫做 vuex ,其實還有更新的套件啦,叫做 pinia,我之前簡單看了一下,感覺是大同小異啦,所以就沒去學,如果各位發現其實好用太多了,歡迎留言告訴我喔

以下不是狀態管理全部的功能,但是我覺得最常在用的其實就是這些

state

首先先來定義一個可以在各個網頁頁面取用的變數吧

所有的狀態管理設定都是寫在 src/store/index.ts

https://ithelp.ithome.com.tw/upload/images/20220909/20132990Ho0MoMcc08.png

state 裡面定義變數

state: {
  variable1:'hello',
  variable2:'world',
}

state 裡面定義的變數就可以在各個網頁頁面使用

mutation

再來定義一個可以改變 state 裡面變數的值的方法,方法要寫在 mutations

mutations: {
    setVariable1 (state,newValue) {
      state.variable1 = newValue
    },
},

方法的第一個參數是代表狀態管理裡面的 state,第二個參數之後就看你怎麼玩,像我這裡是寫一個方法,state 內的 variable1 會被改變成方法的第二個參數

How to use

接下來講如何在 vue 頁面使用狀態管理

<script lang="ts" setup>
import { computed } from 'vue'
import { useStore } from 'vuex'
const store = useStore()

// 從狀態管理中獲得 variable1
const variable1=computed(()=>store.state.variable1)

// 改變狀態管理中 variable1 的值
store.commit('setVariable1','go go')    
</script>

首先要從 vuex 中引入 useStore,然後從 vue 中引入 computed,然後要取用狀態管理中的值要像這樣

const variable1=computed(()=>store.state.variable1)

computed 函數回傳 store.state.變數

如果想要改變狀態管理中的變數

store.commit('setVariable1','go go')

store.commit 這個函數,第一個參數是你之前在 src/store/index.tsmutations 內寫的方法,然後第二個參數就是 setVariable1 的第二個參數


上一篇
Vue Router
下一篇
Django getting started
系列文
Vue+Django+MongoDB+Nginx 全端開發30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言