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

資訊專欄INFORMATION COLUMN

Vuex應用

arashicage / 863人閱讀

摘要:這個回調函數就是我們實際進行狀態更改的地方,并且它會接受作為第一個參數變更狀態要喚醒一個,你需要以相應的調用方法提交載荷你可以向傳入額外的參數,即的載荷提交的另一種方式是直接使用包含屬性的對象類似于,不同在于提交的是,而不是直接變更狀態。

狀態(數據)管理

由于多個狀態分散的跨越在許多組件和交互間各個角落,大型應用復雜度也經常逐漸增長。為了解決這個問題,Vue 提供 vuex:
Vuex 是一個專為 Vue.js 應用程序開發的狀態管理模式。

vuex基本介紹

每一個 Vuex 應用的核心就是 store(倉庫)。"store" 基本上就是一個容器,它包含著你的應用中大部分的狀態(state)

1.Vuex 的狀態存儲是響應式的。當 Vue 組件從 store 中讀取狀態的時候,若 store 中的狀態發生變化,那么相應的組件也會相應地得到高效更新。

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

核心概念

Store(最基本的概念)

State (數據)

Getters

Mutations

Actions

Modules

store

安裝 Vuex 之后,讓我們來創建一個 store

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

通過 store.state 來獲取狀態對象,以及通過 store.commit 方法觸發狀態變更:

  
 store.commit("jian");
console.log(store.state.count);  
state 單一狀態樹

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

在 Vue 組件中獲得 Vuex 狀態

由于 Vuex 的狀態存儲是響應式的,從 store 實例中讀取狀態最簡單的方法就是在計算屬性中返回某個狀態:

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

每當 store.state.count 變化的時候, 都會重新求取計算屬性,并且觸發更新相關聯的 DOM。Vuex 通過 store 選項,提供了一種機制將狀態從根組件『注入』到每一個子組件中(需調用 Vue.use(Vuex)):

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

當一個組件需要獲取多個狀態時候,將這些狀態都聲明為計算屬性會有些重復和冗余。為了解決這個問題,我們可以使用 mapState 輔助函數幫助我們生成計算屬性,

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

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

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

當映射的計算屬性的名稱與 state 的子節點名稱相同時,我們也可以給 mapState 傳一個字符串數組。

computed:Vuex.mapState(["count","num1"]),  
對象展開運算符

我們將它與局部計算屬性混合使用時,我們需要使用一個工具函數將多個對象合并為一個,以使我們可以將最終對象傳給 computed 屬性。

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

Vuex 允許我們在 store 中定義『getters』(可以認為是 store 的計算屬性)。就像計算屬性一樣,getters的返回值會根據它的依賴被緩存起來,且只有當它的依賴值發生了改變才會被重新計算。

Getters 接受 state 作為其第一個參數,Getters 會暴露為 store.getters 對象:

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

Getters 也可以接受其他 getters 作為第二個參數:

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

mapGetters 輔助函數僅僅是將 store 中的 getters 映射到局部計算屬性:

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

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

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

要喚醒一個 mutation handler,你需要以相應的 type 調用 store.commit 方法:

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

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

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

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

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

Action 類似于 mutation,不同在于:

Action 提交的是 mutation,而不是直接變更狀態。

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

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

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/91805.html

相關文章

  • Vuex 構建一個筆記應用

    摘要:如果不熟悉,在這個教程里面,我們會通過構建一個筆記應用來學習怎么用。這個是我們要構建的筆記應用的截圖你可以從下載源碼,這里是的地址。每當用戶點擊筆記列表中的某一條時,組件會調用來分發這個會把當前選中的筆記設為。 原文:Learn Vuex by Building a Notes App,有刪改。 本文假設讀者熟悉 Vuex 文檔 的內容。如果不熟悉,you definitely sho...

    gggggggbong 評論0 收藏0
  • vuex入門

    摘要:使用,引入之后用進行引用。在模板中引入們剛建的文件,并在模板中用輸出的值。在文件中加入兩個改變的方法。和單純的全局對象有以下兩點不同的狀態存儲是響應式的。改變中的狀態的唯一途徑就是顯式地提交。 vuex 是什么? Vuex 是一個專為 Vue.js 應用程序開發的狀態管理模式。通俗的解釋就是,Vuex 就是為 vue 組件之間進行數據共享而開發的插件。 vuex 什么時候用? 實現數據...

    weakish 評論0 收藏0
  • Vue_Vuex

    摘要:定義調用更改的中的狀態的唯一方法是提交中的非常類似于事件每個都有一個字符串的事件類型和一個回調函數,參數。注意點必須是同步函數原因當觸發的時候,回調函數還沒有被調用。實質上任何在回調函數中進行的狀態的改變都是不可追蹤的。 Vuex 集中式狀態管理 使用時機:每一個組件都擁有當前應用狀態的一部分,整個應用的狀態是分散在各個角落的。然而經常會需要把把狀態的一部分共享給多個組件。 Vuex...

    animabear 評論0 收藏0

發表評論

0條評論

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