成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Vuex

SimonMa / 1765人閱讀

摘要:是什么是一個(gè)針對(duì)開(kāi)發(fā)的狀態(tài)管理模式。說(shuō)簡(jiǎn)單點(diǎn)兒就是一個(gè)工具,可以管理修改或設(shè)置所有組件用到的數(shù)據(jù),而不需要借助之前的或者在組件間傳值。

Vuex是什么

Vuex是一個(gè)針對(duì)Vue.js開(kāi)發(fā)的狀態(tài)管理模式。說(shuō)簡(jiǎn)單點(diǎn)兒就是一個(gè)工具,可以管理(修改或設(shè)置)所有組件用到的數(shù)據(jù),而不需要借助之前的event bus或者props在組件間傳值。

Vuex使用場(chǎng)景

大型單頁(yè)應(yīng)用程序,存在多組件共享數(shù)據(jù)的時(shí)候,需要用到
Vuex 核心內(nèi)容

store

(一個(gè)容器對(duì)象,存儲(chǔ)Vuex中的state,mutations,actions,getters等)

state (一個(gè)保存數(shù)據(jù)的對(duì)象,對(duì)象中的數(shù)據(jù)可以供所有組件使用)

// 1. 定義
const state = {
count: 0
}

// 2. 獲取state中的值
this.$store.state.count

// mapState 輔助函數(shù)獲取多個(gè)state的值
import { mapState } from "vuex"
computed: mapState({

// 箭頭函數(shù)可使代碼更簡(jiǎn)練
count: state => state.count,
// 傳字符串參數(shù) "count" 等同于 `state => state.count`
countAlias: "count",

})
computed: mapState([
// 映射 this.count 為 store.state.count
"count"
])

// 3. 與組件的計(jì)算屬性混合使用
computed: {
localComputed () { / ... / },
// 使用對(duì)象展開(kāi)運(yùn)算符將此對(duì)象混入到外部對(duì)象中
...mapState({

// ...

})
}

mutations

(一個(gè)對(duì)象,保存的是更改state的函數(shù),也只有它能更改state中的值,觸發(fā)方式this.$store.commit("函數(shù)名",參數(shù)))

// 1. 定義
const mutations = {
  increment (state) {
    state.count++
  }
}

// 2. 觸發(fā)
this.$store.commit("increment")

// 3. 傳遞參數(shù),通常參數(shù)應(yīng)該是一個(gè)對(duì)象
mutations: {
  increment (state, n) {
    state.count += n
  }
}
this.$store.commit("increment", 10)

// 4. 在組件的方法中使用
  methods: {
    ...mapMutations([
      "increment", // 將 `this.increment()` 映射為 `this.$store.commit("increment")`

      // `mapMutations` 也支持載荷:
      "incrementBy" // 將 `this.incrementBy(amount)` 映射為 `this.$store.commit("incrementBy", amount)`
    ]),
    ...mapMutations({
      add: "increment" // 將 `this.add()` 映射為 `this.$store.commit("increment")`
    })
  }
actions

(一個(gè)對(duì)象,保存的是觸發(fā)mutations的函數(shù),讓mutations去修改state中的值)

// 1. 定義
const actions = {
  increment: ({ commit }) => commit("increment")
}

// 2. 觸發(fā)
this.$store.dispatch("increment")

// 3. 參數(shù)支持
this.$store.dispatch("incrementAsync", {
  amount: 10
})

// 4. 組件的方法中使用
  methods: {
    ...mapActions([
      "increment", // 將 `this.increment()` 映射為 `this.$store.dispatch("increment")`

      // `mapActions` 也支持載荷:
      "incrementBy" // 將 `this.incrementBy(amount)` 映射為 `this.$store.dispatch("incrementBy", amount)`
    ]),
    ...mapActions({
      add: "increment" // 將 `this.add()` 映射為 `this.$store.dispatch("increment")`
    })
  }
getters

(一個(gè)對(duì)象,保存的是一些類似與計(jì)算屬性的函數(shù),可以通過(guò)他們得到任何依賴于state的新的數(shù)據(jù))

// 1. 定義
const getters = {
  evenOrOdd: state => state.count % 2 === 0 ? "even" : "odd"
}

// 2. 使用
this.$store.getters.evenOrOdd

// 3. 使用其他getters作為參數(shù)
getters: {
  // ...
  doneTodosCount: (state, getters) => {
    return getters.doneTodos.length
  }
}

// 4. 組件內(nèi)使用
export default {
  // ...
  computed: {
  // 使用對(duì)象展開(kāi)運(yùn)算符將 getter 混入 computed 對(duì)象中
    ...mapGetters([
      "doneTodosCount",
      "anotherGetter",
      // ...
    ])
  }
}
使用vuex

npm install vuex -S

// store.js
import Vue from "vue"
import Vuex from "vuex"

Vue.use(Vuex)
const state = {}
const mutations = {}
const actions = {}
const getters = {}
export default new Vuex.Store({
  state,
  getters,
  actions,
  mutations
})

// app.js
import store from "./store"

new Vue({
  el: "#app",
  store,
  render: h => h(Counter)
})


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

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/104214.html

相關(guān)文章

  • Vuex源碼閱讀筆記

    摘要:而鉆研最好的方式,就是閱讀的源代碼。整個(gè)的源代碼,核心內(nèi)容包括兩部分。逃而動(dòng)手腳的代碼,就存在于源代碼的中。整個(gè)源代碼讀下來(lái)一遍,雖然有些部分不太理解,但是對(duì)和一些代碼的使用的理解又加深了一步。 筆記中的Vue與Vuex版本為1.0.21和0.6.2,需要閱讀者有使用Vue,Vuex,ES6的經(jīng)驗(yàn)。 起因 俗話說(shuō)得好,沒(méi)有無(wú)緣無(wú)故的愛(ài),也沒(méi)有無(wú)緣無(wú)故的恨,更不會(huì)無(wú)緣無(wú)故的去閱讀別人的源...

    hosition 評(píng)論0 收藏0
  • Vuex源碼學(xué)習(xí)(一)功能梳理

    摘要:我們通常稱之為狀態(tài)管理模式,用于解決組件間通信的以及多組件共享狀態(tài)等問(wèn)題。創(chuàng)建指定命名空間的輔助函數(shù),總結(jié)的功能首先分為兩大類自己的實(shí)例使用為組件中使用便利而提供的輔助函數(shù)自己內(nèi)部對(duì)數(shù)據(jù)狀態(tài)有兩種功能修改數(shù)據(jù)狀態(tài)異步同步。 what is Vuex ? 這句話我想每個(gè)搜索過(guò)Vuex官網(wǎng)文檔的人都看到過(guò), 在學(xué)習(xí)源碼前,當(dāng)然要有一些前提條件了。 了解Vuex的作用,以及他的使用場(chǎng)景。 ...

    livem 評(píng)論0 收藏0
  • Vue學(xué)習(xí)日記(四)——Vue狀態(tài)管理vuex

    摘要:說(shuō)實(shí)在話,我在閱讀文檔的時(shí)候,也很難以去理解,甚至覺(jué)得沒(méi)有使用它我也可以。介紹那么到底是什么引用官網(wǎng)的說(shuō)法就是是一個(gè)專為應(yīng)用程序開(kāi)發(fā)的狀態(tài)管理模式。它采用集中式存儲(chǔ)管理應(yīng)用的所有組件的狀態(tài),并以相應(yīng)的規(guī)則保證狀態(tài)以一種可預(yù)測(cè)的方式發(fā)生變化。 前言 先說(shuō)句前話,如果不是接觸大型項(xiàng)目,不需要有多個(gè)子頁(yè)面,不使用vuex也是完全可以的。 說(shuō)實(shí)在話,我在閱讀vuex文檔的時(shí)候,也很難以去理解v...

    fai1017 評(píng)論0 收藏0
  • Vue學(xué)習(xí)日記(四)——Vue狀態(tài)管理vuex

    摘要:說(shuō)實(shí)在話,我在閱讀文檔的時(shí)候,也很難以去理解,甚至覺(jué)得沒(méi)有使用它我也可以。介紹那么到底是什么引用官網(wǎng)的說(shuō)法就是是一個(gè)專為應(yīng)用程序開(kāi)發(fā)的狀態(tài)管理模式。它采用集中式存儲(chǔ)管理應(yīng)用的所有組件的狀態(tài),并以相應(yīng)的規(guī)則保證狀態(tài)以一種可預(yù)測(cè)的方式發(fā)生變化。 前言 先說(shuō)句前話,如果不是接觸大型項(xiàng)目,不需要有多個(gè)子頁(yè)面,不使用vuex也是完全可以的。 說(shuō)實(shí)在話,我在閱讀vuex文檔的時(shí)候,也很難以去理解v...

    zilu 評(píng)論0 收藏0
  • Vue學(xué)習(xí)日記(四)——Vue狀態(tài)管理vuex

    摘要:說(shuō)實(shí)在話,我在閱讀文檔的時(shí)候,也很難以去理解,甚至覺(jué)得沒(méi)有使用它我也可以。介紹那么到底是什么引用官網(wǎng)的說(shuō)法就是是一個(gè)專為應(yīng)用程序開(kāi)發(fā)的狀態(tài)管理模式。它采用集中式存儲(chǔ)管理應(yīng)用的所有組件的狀態(tài),并以相應(yīng)的規(guī)則保證狀態(tài)以一種可預(yù)測(cè)的方式發(fā)生變化。 前言 先說(shuō)句前話,如果不是接觸大型項(xiàng)目,不需要有多個(gè)子頁(yè)面,不使用vuex也是完全可以的。 說(shuō)實(shí)在話,我在閱讀vuex文檔的時(shí)候,也很難以去理解v...

    fjcgreat 評(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

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

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<