成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

Vuex應(yīng)用

arashicage / 934人閱讀

摘要:這個(gè)回調(diào)函數(shù)就是我們實(shí)際進(jìn)行狀態(tài)更改的地方,并且它會(huì)接受作為第一個(gè)參數(shù)變更狀態(tài)要喚醒一個(gè),你需要以相應(yīng)的調(diào)用方法提交載荷你可以向傳入額外的參數(shù),即的載荷提交的另一種方式是直接使用包含屬性的對(duì)象類似于,不同在于提交的是,而不是直接變更狀態(tài)。

狀態(tài)(數(shù)據(jù))管理

由于多個(gè)狀態(tài)分散的跨越在許多組件和交互間各個(gè)角落,大型應(yīng)用復(fù)雜度也經(jīng)常逐漸增長(zhǎng)。為了解決這個(gè)問(wèn)題,Vue 提供 vuex:
Vuex 是一個(gè)專為 Vue.js 應(yīng)用程序開(kāi)發(fā)的狀態(tài)管理模式。

vuex基本介紹

每一個(gè) Vuex 應(yīng)用的核心就是 store(倉(cāng)庫(kù))。"store" 基本上就是一個(gè)容器,它包含著你的應(yīng)用中大部分的狀態(tài)(state)

1.Vuex 的狀態(tài)存儲(chǔ)是響應(yīng)式的。當(dāng) Vue 組件從 store 中讀取狀態(tài)的時(shí)候,若 store 中的狀態(tài)發(fā)生變化,那么相應(yīng)的組件也會(huì)相應(yīng)地得到高效更新。

2.你不能直接改變 store 中的狀態(tài)。改變 store 中的狀態(tài)的唯一途徑就是顯式地提交(commit) mutations。

核心概念

Store(最基本的概念)

State (數(shù)據(jù))

Getters

Mutations

Actions

Modules

store

安裝 Vuex 之后,讓我們來(lái)創(chuàng)建一個(gè) store

var store=new Vuex.Store({
    state:{
        count:0
    },
    mutations:{
        jia(state){
            state.count++;
        },
        jian(state){
            state.count--;
        },
    }
});  

通過(guò) store.state 來(lái)獲取狀態(tài)對(duì)象,以及通過(guò) store.commit 方法觸發(fā)狀態(tài)變更:

  
 store.commit("jian");
console.log(store.state.count);  
state 單一狀態(tài)樹(shù)

Vuex 使用 單一狀態(tài)樹(shù) —— 是的,用一個(gè)對(duì)象就包含了全部的應(yīng)用層級(jí)狀態(tài)。至此它便作為一個(gè)『唯一數(shù)據(jù)源(SSOT)』而存在。這也意味著,每個(gè)應(yīng)用將僅僅包含一個(gè) store 實(shí)例。單一狀態(tài)樹(shù)讓我們能夠直接地定位任一特定的狀態(tài)片段,在調(diào)試的過(guò)程中也能輕易地取得整個(gè)當(dāng)前應(yīng)用狀態(tài)的快照。

在 Vue 組件中獲得 Vuex 狀態(tài)

由于 Vuex 的狀態(tài)存儲(chǔ)是響應(yīng)式的,從 store 實(shí)例中讀取狀態(tài)最簡(jiǎn)單的方法就是在計(jì)算屬性中返回某個(gè)狀態(tài):

computed:{
    count(){
        return this.$store.state.count;
    },
    num1(){
        return this.$store.state.num1;
    }
},  

每當(dāng) store.state.count 變化的時(shí)候, 都會(huì)重新求取計(jì)算屬性,并且觸發(fā)更新相關(guān)聯(lián)的 DOM。Vuex 通過(guò) store 選項(xiàng),提供了一種機(jī)制將狀態(tài)從根組件『注入』到每一個(gè)子組件中(需調(diào)用 Vue.use(Vuex)):

 computed:Vuex.mapState({
    count:state=>state.count,
    num1:state=>state.num1,
    }),  
mapState 輔助函數(shù)

當(dāng)一個(gè)組件需要獲取多個(gè)狀態(tài)時(shí)候,將這些狀態(tài)都聲明為計(jì)算屬性會(huì)有些重復(fù)和冗余。為了解決這個(gè)問(wèn)題,我們可以使用 mapState 輔助函數(shù)幫助我們生成計(jì)算屬性,

// 在多帶帶構(gòu)建的版本中輔助函數(shù)為 Vuex.mapState
computed:Vuex.mapState({
    // 箭頭函數(shù)可使代碼更簡(jiǎn)練
    count: state => state.count,

    // 傳字符串參數(shù) "count" 等同于 `state => state.count`
    countAlias: "count",

    // 為了能夠使用 `this` 獲取局部狀態(tài),必須使用常規(guī)函數(shù)
    countPlusLocalState (state) {
      return state.count + this.localCount
    }
  })  

當(dāng)映射的計(jì)算屬性的名稱與 state 的子節(jié)點(diǎn)名稱相同時(shí),我們也可以給 mapState 傳一個(gè)字符串?dāng)?shù)組。

computed:Vuex.mapState(["count","num1"]),  
對(duì)象展開(kāi)運(yùn)算符

我們將它與局部計(jì)算屬性混合使用時(shí),我們需要使用一個(gè)工具函數(shù)將多個(gè)對(duì)象合并為一個(gè),以使我們可以將最終對(duì)象傳給 computed 屬性。

computed: {
...Vuex.mapState(["count","num1"]),  
  localComputed () { /* ... */ },
// 使用對(duì)象展開(kāi)運(yùn)算符將此對(duì)象混入到外部對(duì)象中
})
}  
組件仍然保有局部狀態(tài) getters

Vuex 允許我們?cè)?store 中定義『getters』(可以認(rèn)為是 store 的計(jì)算屬性)。就像計(jì)算屬性一樣,getters的返回值會(huì)根據(jù)它的依賴被緩存起來(lái),且只有當(dāng)它的依賴值發(fā)生了改變才會(huì)被重新計(jì)算。

Getters 接受 state 作為其第一個(gè)參數(shù),Getters 會(huì)暴露為 store.getters 對(duì)象:

 getters:{
    he(state){
        return  state.count+state.num1+state.num2+getters.jia5;
    },
    
}  

Getters 也可以接受其他 getters 作為第二個(gè)參數(shù):

getters:{
    he(state,getters){
        return  state.count+state.num1+state.num2+getters.jia5;
    },
    jia5(state){
        return state.count+5
    }
}  
mapGetters 輔助函數(shù)

mapGetters 輔助函數(shù)僅僅是將 store 中的 getters 映射到局部計(jì)算屬性:

computed:{
     ...Vuex.mapState(["count","num1","num2"]),
     ...Vuex.mapGetters(["he"]),
},
template:"
{{count}}-{{num1}}-{{num2}}={{he}}
"
mutations

更改 Vuex 的 store 中的狀態(tài)的唯一方法是提交 mutation。Vuex 中的 mutations 非常類似于事件:每個(gè) mutation 都有一個(gè)字符串的 事件類型 (type) 和 一個(gè) 回調(diào)函數(shù) (handler)。這個(gè)回調(diào)函數(shù)就是我們實(shí)際進(jìn)行狀態(tài)更改的地方,并且它會(huì)接受 state 作為第一個(gè)參數(shù):

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

要喚醒一個(gè) mutation handler,你需要以相應(yīng)的 type 調(diào)用 store.commit 方法:

store.commit("increment")  
提交載荷(Payload)

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

 mutations:{
    jia(state,arg){
        state.count+=arg.n;
    },
    jian(state,arg){
        state.count-=arg.n;
    },
},

提交 mutation 的另一種方式是直接使用包含 type 屬性的對(duì)象:

this.$store.commit({type="jia",n:3})  
actions

Action 類似于 mutation,不同在于:

Action 提交的是 mutation,而不是直接變更狀態(tài)。

Action 可以包含任意異步操作。

actions:{
     jia(commit){
        commit({type:"jia",n:3});
    }
},  

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/91805.html

相關(guān)文章

  • Vuex 構(gòu)建一個(gè)筆記應(yīng)用

    摘要:如果不熟悉,在這個(gè)教程里面,我們會(huì)通過(guò)構(gòu)建一個(gè)筆記應(yīng)用來(lái)學(xué)習(xí)怎么用。這個(gè)是我們要構(gòu)建的筆記應(yīng)用的截圖你可以從下載源碼,這里是的地址。每當(dāng)用戶點(diǎn)擊筆記列表中的某一條時(shí),組件會(huì)調(diào)用來(lái)分發(fā)這個(gè)會(huì)把當(dāng)前選中的筆記設(shè)為。 原文:Learn Vuex by Building a Notes App,有刪改。 本文假設(shè)讀者熟悉 Vuex 文檔 的內(nèi)容。如果不熟悉,you definitely sho...

    gggggggbong 評(píng)論0 收藏0
  • vuex入門

    摘要:使用,引入之后用進(jìn)行引用。在模板中引入們剛建的文件,并在模板中用輸出的值。在文件中加入兩個(gè)改變的方法。和單純的全局對(duì)象有以下兩點(diǎn)不同的狀態(tài)存儲(chǔ)是響應(yīng)式的。改變中的狀態(tài)的唯一途徑就是顯式地提交。 vuex 是什么? Vuex 是一個(gè)專為 Vue.js 應(yīng)用程序開(kāi)發(fā)的狀態(tài)管理模式。通俗的解釋就是,Vuex 就是為 vue 組件之間進(jìn)行數(shù)據(jù)共享而開(kāi)發(fā)的插件。 vuex 什么時(shí)候用? 實(shí)現(xiàn)數(shù)據(jù)...

    weakish 評(píng)論0 收藏0
  • Vue_Vuex

    摘要:定義調(diào)用更改的中的狀態(tài)的唯一方法是提交中的非常類似于事件每個(gè)都有一個(gè)字符串的事件類型和一個(gè)回調(diào)函數(shù),參數(shù)。注意點(diǎn)必須是同步函數(shù)原因當(dāng)觸發(fā)的時(shí)候,回調(diào)函數(shù)還沒(méi)有被調(diào)用。實(shí)質(zhì)上任何在回調(diào)函數(shù)中進(jìn)行的狀態(tài)的改變都是不可追蹤的。 Vuex 集中式狀態(tài)管理 使用時(shí)機(jī):每一個(gè)組件都擁有當(dāng)前應(yīng)用狀態(tài)的一部分,整個(gè)應(yīng)用的狀態(tài)是分散在各個(gè)角落的。然而經(jīng)常會(huì)需要把把狀態(tài)的一部分共享給多個(gè)組件。 Vuex...

    animabear 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<