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

資訊專欄INFORMATION COLUMN

vuex的簡單介紹

chavesgu / 2470人閱讀

摘要:中的非常類似于事件每個都有一個字符串的事件類型和一個回調函數。這個回調函數就是我們實際進行狀態更改的地方,并且它會接受作為第一個參數提交載荷你可以向傳入額外的參數,即的載荷類似于,不同在于提交的是,而不是直接變更狀態可以包含任意異步操作

Vuex 入門

Vuex 是一個專為 Vue.js 應用程序開發的狀態管理模式。它采用集中式存儲管理應用的所有組件的狀態,并以相應的規則保證狀態以一種可預測的方式發生變化。說白了,vuex就是用來管理數據的。

直接下載或者CDN引入

https://unpkg.com/vuex

Vuex的核心就是store(倉庫),其包含應用中的大部分狀態。Vuex 和單純的全局對象有以下兩點不同:

Vuex的狀態存儲時響應式的

store中狀態不能直接改變

現在我們來創建一個store:

new Vuex.Store({
    state:{
        //......
    },
    mutations:{

    }
})

在這個store里,包含了一個 state 對象和 mutations

state用來存儲初始化的數據,讀取數據使用 store.state.數據 。

修改數據使用 mutations ,調用 mutations 里的數據需要使用 commit()

現在來嘗試使用以下vuex,做一個簡單的計數程序:

HTML

  

javascript

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

    var app=new Vue({
      el:"#app",
      template:"#tpl",
      components:{
        tip:{
          template:"
{{$store.state.count}}
" }, btn:{ template:`
` } }, store }}
vuex的核心

State

Getters

Mutations

Actions

Modlues

State

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

// 創建一個 Counter 組件
const Counter = {
  template: `
{{ count }}
`, computed: { count () { return store.state.count } } }

每當 store.state.count 變化的時候, 都會重新求取計算屬性,并且觸發更新相關聯的 DOM。

mapState 輔助函數

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

// 在多帶帶構建的版本中輔助函數為 Vuex.mapState
import { mapState } from "vuex"

export default {
  // ...
  computed: mapState({
    // 箭頭函數可使代碼更簡練
    count: state => state.count,

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

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

有時候我們需要從 store 中的 state 中派生出一些狀態,例如對列表進行過濾并計數:

computed: {
  doneTodosCount () {
    return this.$store.state.todos.filter(todo => todo.done).length
  }
}

如果有多個組件需要用到此屬性,我們要么復制這個函數,或者抽取到一個共享函數然后在多處導入它 —— 無論哪種方式都不是很理想。

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

Getters 接受 state 作為其第一個參數:

const store = new Vuex.Store({
  state: {
    todos: [
      { id: 1, text: "...", done: true },
      { id: 2, text: "...", done: false }
    ]
  },
  getters: {
    doneTodos: state => {
      return state.todos.filter(todo => todo.done)
    }
  }
})


store.getters.doneTodes

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

getters: {
  // ...
  doneTodosCount: (state, getters) => {
    return getters.doneTodos.length
  }
}

store.getters.doneTodosCount

我們可以很容易地在任何組件中使用它:

computed: {
  doneTodosCount () {
    return this.$store.getters.doneTodosCount
  }
}
mapGetters 輔助函數

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

computed:{
  ...mapGetters([
    // 使用對象展開運算符將 getters 混入 computed 對象中
    "doneTodosCount",
    "anotherGetters"
  ])
}
Mutations

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

const store = new Vuex.Store({
  state:{
    count:0
  },
  mutations:{
    plus(state){
      state.count++
    },
    less(state){
      state.count--
    }
  }
});
提交載荷(Paylaod)

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

const store = new Vuex.Store({
  state:{
    count:0
  },
  mutations:{
    plus(state,n){
      state.count+=n
    },
    less(state,n){
      state.count-=n
    }
  }
});

this.$store.commit("plus",5)
this.$store.commit("less",5)
Actions

Action 類似于 mutation,不同在于:

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

Action 可以包含任意異步操作

actions:{
  plus(commit){
    commit({type:"plus",n:5})
  }
}

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

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

相關文章

  • 簡單入門Vuex小示例

    摘要:寫在前面本文旨在通過一個簡單的例子,練習的幾個常用方法,使初學者以最快的速度跑起來一個的示例。生成基于的項目基于腳手架生成一個項目常用命令項目名進入項目目錄,使用先試著跑一下。子組件可以修改父組件和自己的數據。 寫在前面 本文旨在通過一個簡單的例子,練習vuex的幾個常用方法,使初學者以最快的速度跑起來一個vue + vuex的示例。 學習vuex需要你知道vue的一些基礎知識和用法。...

    linkin 評論0 收藏0
  • vuex其實超簡單,只需3步

    摘要:每一條被記錄,都需要捕捉到前一狀態和后一狀態的快照。然而,在上面的例子中中的異步函數中的回調讓這不可能完成因為當觸發的時候,回調函數還沒有被調用,不知道什么時候回調函數實際上被調用實質上任何在回調函數中進行的狀態的改變都是不可追蹤的。 前言 之前幾個項目中,都多多少少碰到一些組件之間需要通信的地方,而因為種種原因,event bus 的成本反而比vuex還高, 所以技術選型上選用了 v...

    binta 評論0 收藏0
  • vuex其實超簡單,只需3步

    摘要:每一條被記錄,都需要捕捉到前一狀態和后一狀態的快照。然而,在上面的例子中中的異步函數中的回調讓這不可能完成因為當觸發的時候,回調函數還沒有被調用,不知道什么時候回調函數實際上被調用實質上任何在回調函數中進行的狀態的改變都是不可追蹤的。 前言 之前幾個項目中,都多多少少碰到一些組件之間需要通信的地方,而因為種種原因,event bus 的成本反而比vuex還高, 所以技術選型上選用了 v...

    summerpxy 評論0 收藏0
  • 瞎說vuex

    摘要:本來說好寫完組件通信后就會寫相關的東西,現在快過去兩個多月了,主要是由于自己工作的原因,后面會保證更新速度的。它采用集中式存儲管理應用的所有組件的狀態,并以相應的規則保證狀態以一種可預測的方式發生變化。改變中的狀態的唯一途徑就是顯式地提交。 本來說好寫完組件通信后就會寫vuex相關的東西,現在快過去兩個多月了,主要是由于自己工作的原因,后面會保證更新速度的。不廢話了,直接正題。個人博客...

    OBKoro1 評論0 收藏0

發表評論

0條評論

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