最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解Vuex的屬性

 更新時間:2022年08月06日 08:45:26   作者:shallow-dreamer  
Vuex是專為Vue.js應用程序開發(fā)的狀態(tài)管理模式,這篇文章主要介紹了Vuex的屬性,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

Vuex是專為Vue.js應用程序開發(fā)的狀態(tài)管理模式。它采用集中式存儲管理應用的所有組件的狀態(tài),并以相應的規(guī)則保證狀態(tài)以一種可預測的方式發(fā)生變化。

簡單來說:VuexVue框架中狀態(tài)管理

圖中綠色虛線包裹起來的部分就是Vue的核心,state中保存的就是公共狀態(tài),改變state的唯一方式就是通過mutations進行更改

狀態(tài)管理模式

把組件的共享狀態(tài)抽取出來,以一個全局單例模式管理。在這種模式下,組件數(shù)構成了一個巨大的視圖,不管在樹的哪個位置,任何組件都能獲取狀態(tài)或者觸發(fā)行為,這就是狀態(tài)管理模式。

應用場景有:單頁應用中,組件之間的數(shù)據(jù)狀態(tài)

應用實例:

  • 購物車功能
  • 下單頁面選擇優(yōu)惠券按鈕,點擊進入優(yōu)惠券頁面,選擇后返回到下單頁,數(shù)據(jù)會綁定回來,顯示已選擇的優(yōu)惠券
  • 登錄狀態(tài)等

Vuex的屬性

  • state

    • Vuex就是一個倉庫,倉庫里面放了很多對象,其中state就是數(shù)據(jù)源存放地,對應一般Vue對象里面的data
    • state里面存放的數(shù)據(jù)是響應式的,Vue組件從store中讀取數(shù)據(jù),若是store中的數(shù)據(jù)發(fā)生改變,依賴這個數(shù)據(jù)的組件也會發(fā)生更新
    • 通過mapState把全局的stategetters映射到當前組件的computed計算屬性中
  • getters

    • getters可以對state進行計算操作,它就是store的計算屬性
    • 雖然在組件內(nèi)也可以做計算屬性,但是getters可以在多組件之間復用
    • 如果一個狀態(tài)只在一個組件內(nèi)使用,可以不用getters

Mutations

每個mutations都有一個字符串的事件類型(type)和一個回調(diào)函數(shù)(handler),這個回調(diào)函數(shù)就是實際進行狀態(tài)修改的地方,并且它會接收state作為第一個參數(shù):

const store = new Vuex.Store({
    state:{
        count:1
    },
    mutations:{
        increment(state){
            //變更狀態(tài)
            state.count++
        }
    }
})

不能直接調(diào)用一個mutation handler。這個選項更像是事件注冊,當觸發(fā)一個類型為incrementmutations時,調(diào)用此函數(shù)。要喚醒一個mutation handler,需要調(diào)用相應的type調(diào)用store.commit方法

store.commit('increment')

提交載荷(payload)

可以向store.commit傳入額外的參數(shù),即mutation的載荷(payload)

state:{
    count:0
},
mutations:{
    increment(state,n){
        state.count += n
    }
}

//組件
store.commit('increment',10)

在大多數(shù)情況下,載荷應該是一個對象,這安樣可以包含多個字段并且記錄的mutation會更易讀

state:{
    count:0
},
mutations:{
    increment(state,payload){
        state.count += payload
    }
}

//組件
store.commit('increment',{
    amount:10
})

Mutation需遵守Vue的響應規(guī)則

既然Vuex的store中的狀態(tài)時響應式的,那么當我們變更狀態(tài)時,監(jiān)聽狀態(tài)的Vue組件也會自動更新。這也意味著Vuex中的mutation需要與使用Vue一樣遵守一些注意事項:

最好提前在store中初始化好所有所需屬性

當需要在對象上添加新屬性時,應該

mutation必須是同步函數(shù)

使用Vue.set(obj,'newProp,123)

以新對象替換老對象。例如,利用對象展開運算符

state.obj = {...state.obj,newProp:123}

actions

action類似于mutation,不同在于:

action通過store.dispatch方法觸發(fā)

store.dispatch('increment')

action內(nèi)部執(zhí)行異步操作

actions:{
    incrementAsync({commit}){
        setTimeout(() => {
            commit('increment')
        },1000)
    }
}

action同樣支持載荷方式和對象方式進行分發(fā)

//以載荷形式分發(fā)
store.dispatch('incrementAsync',{
    amount:10
})
//以對象形式分發(fā)
store.dispatch({
    type:'incrementAsync',
    amount:10
})
  • action提交的是mutation,而不是直接變更狀態(tài)
  • action可以包含任意異步操作

module

module可以讓每個模塊擁有自己的state、mutationsaction、getters使得結構非常清晰,方便管理

const moduleA = {
  state: { ... },
  mutations: { ... },
  actions: { ... },
  getters: { ... }
}
const moduleB = {
  state: { ... },
  mutations: { ... },
  actions: { ... }
}

const store = new Vuex.Store({
 modules: {
  a: moduleA,
  b: moduleB
})

使用Vuex的好處

  • 多層嵌套的組件,兄弟組件間的狀態(tài)會更好管理維護
  • 緩存一些當前要使用的請求遠程或本地的數(shù)據(jù)集(刷新后會自動銷毀)
  • 有了第二條就可以減少向服務器的請求,節(jié)省資源
  • 對于開發(fā)者來說,如果項目足夠復雜,團隊規(guī)模大,數(shù)據(jù)集中處理更利于程序的穩(wěn)定和維護

參考文獻:

https://v3.vuex.vuejs.org/zh/

到此這篇關于Vuex的屬性的文章就介紹到這了,更多相關Vuex的屬性內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • vue如何使用mapbox對當前行政區(qū)劃進行反選遮罩

    vue如何使用mapbox對當前行政區(qū)劃進行反選遮罩

    這篇文章主要介紹了vue如何使用mapbox對當前行政區(qū)劃進行反選遮罩問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • vue中拆分組件的實戰(zhàn)案例

    vue中拆分組件的實戰(zhàn)案例

    最近在學vue,試著寫個單頁應用,在寫組件,拆分組件時遇到一些困惑,下面這篇文章主要給大家介紹了關于vue中拆分組件的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-12-12
  • 詳解Vue.js自定義tipOnce指令用法實例

    詳解Vue.js自定義tipOnce指令用法實例

    這篇文章主要介紹了詳解Vue.js自定義tipOnce指令用法實例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12
  • Vue3?中的?readonly?特性及函數(shù)使用詳解

    Vue3?中的?readonly?特性及函數(shù)使用詳解

    readonly是Vue3中提供的一個新特性,用于將一個響應式對象變成只讀對象,這篇文章主要介紹了Vue3?中的?readonly?特性詳解,需要的朋友可以參考下
    2023-04-04
  • 怎樣在vue項目下添加ESLint的方法

    怎樣在vue項目下添加ESLint的方法

    這篇文章主要介紹了怎樣在vue項目下添加ESLint的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-05-05
  • 使用vue-cli編寫vue插件的方法

    使用vue-cli編寫vue插件的方法

    本篇文章主要介紹了使用vue-cli編寫vue插件的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-02-02
  • vue+canvas實現(xiàn)數(shù)據(jù)實時從上到下刷新瀑布圖效果(類似QT的)

    vue+canvas實現(xiàn)數(shù)據(jù)實時從上到下刷新瀑布圖效果(類似QT的)

    這篇文章主要介紹了vue+canvas實現(xiàn)數(shù)據(jù)實時從上到下刷新瀑布圖效果(類似QT的),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-04-04
  • vue中字符串如何拼接路由path路徑

    vue中字符串如何拼接路由path路徑

    這篇文章主要介紹了vue中字符串如何拼接路由path路徑方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • 一篇文章告訴你Vue3指令是如何實現(xiàn)的

    一篇文章告訴你Vue3指令是如何實現(xiàn)的

    在計算機技術中,指令是由指令集架構定義的單個的CPU操作,在更廣泛的意義上,“指令”可以是任何可執(zhí)行程序的元素的表述,例如字節(jié)碼,下面這篇文章主要給大家介紹了關于Vue3指令是如何實現(xiàn)的相關資料,需要的朋友可以參考下
    2022-01-01
  • Vue學習筆記之計算屬性與偵聽器用法

    Vue學習筆記之計算屬性與偵聽器用法

    這篇文章主要介紹了Vue學習筆記之計算屬性與偵聽器用法,結合實例形式詳細分析了vue.js計算屬性與偵聽器基本功能、原理、使用方法及操作注意事項,需要的朋友可以參考下
    2019-12-12

最新評論

茂名市| 汝城县| 错那县| 遂川县| 清徐县| 股票| 靖宇县| 和林格尔县| 天柱县| 贵南县| 横峰县| 辽宁省| 卓尼县| 楚雄市| 正镶白旗| 玉树县| 宁国市| 那曲县| 大同县| 南阳市| 房产| 民丰县| 昌图县| 铜梁县| 壶关县| 崇文区| 洛宁县| 德州市| 中山市| 雷州市| 乐安县| 福清市| 灯塔市| 霍州市| 隆尧县| 阳高县| 乌拉特中旗| 重庆市| 龙陵县| 怀集县| 通榆县|