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

資訊專欄INFORMATION COLUMN

手把手教你學vue-4(vuex)

Hujiawei / 2686人閱讀

摘要:管理統一組件狀態。映射到組件將映射為也支持載荷將映射為將映射為概念允許我們將分割成模塊。每個模塊擁有自己的類似里面的針對每個組件對應的狀態做處理的狀態的狀態對于模塊內部的,局部狀態通過暴露出來,根節點狀態則為。

1.首先明白vuex是做什么用的。
管理統一組件狀態state。每個應用將僅僅包含一個 store 實例。單一狀態樹讓我們能夠直接地定位任一特定的狀態片段,在調試的過程中也能輕易地取得整個當前應用狀態的快照。
2.如何實現 vuex有幾個對象

state =>mapState

getters =>mapGetters

actions =>mapActions

mutations => mapMutations

moudle

3.state (注入store)

Vuex 通過 store 選項,提供了一種機制將狀態從根組件“注入”到每一個子組件中(需調用 Vue.use(Vuex)):

const app = new Vue({
  el: "#app",
  // 把 store 對象提供給 “store” 選項,這可以把 store 的實例注入所有的子組件
  store,
  components: { Counter },
  template: `
    
` })

通過在根實例中注冊 store 選項,該 store 實例會注入到根組件下的所有子組件中,且子組件能通過 this.$store 訪問到
當我們需要時刻跟蹤狀態值的變化時,可以通過組件的計算機屬性來確定,然后使用mapState.方法來映射。

computed: {
  localComputed () { /* ... */ },
  // 使用對象展開運算符將此對象混入到外部對象中
  ...mapState({
    // ...
  })
}
4.getters (都是方法)
Vuex 允許我們在 store 中定義“getter”(可以認為是 store 的計算屬性)。就像計算屬性一樣,getter 的返回值會根據它的依賴被緩存起來,且只有當它的依賴值發生了改變才會被重新計算。

Getter 接受 state 作為第一個參數

mapGetters 輔助函數僅僅是將 store 中的 getter

import { mapGetters } from "vuex"
export default {
  computed: {
  // 使用對象展開運算符將 getter 混入 computed 對象中
    ...mapGetters([
      "doneTodosCount",
      "anotherGetter",
      // ...
    ])
  }
}
5. mutation
更改 Vuex 的 store 中的狀態的唯一方法是提交 mutation,調用方法store.commit("increment")

注意點

使用常量替代 Mutation 事件類型

export const SOME_MUTATION = "SOME_MUTATION"
// store.js
import Vuex from "vuex"
import { SOME_MUTATION } from "./mutation-types"

const store = new Vuex.Store({
  state: { ... },
  mutations: {
    // 我們可以使用 ES2015 風格的計算屬性命名功能來使用一個常量作為函數名
    [SOME_MUTATION] (state) {
      // mutate state
    }
  }
})

Mutation 必須是同步函數

mapMutations

   import { mapMutations } from "vuex"
   export default {
 // ...
 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")`
   })
 }
   }

6.Action

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

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

context 不是 store 實例本身
Action 函數接受一個與 store 實例具有相同方法和屬性的 context 對象,因此你可以調用 context.commit 提交一個 mutation,或者通過 context.state 和 context.getters 來獲取 state 和 getters。
actions: {
 increment ({ commit }) {
   commit("increment")
 }
}
mapActions 映射到組件
import { mapActions } from "vuex"

export default {
  // ...
  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")`
    })
  }
}
7. Module
概念
Vuex 允許我們將 store 分割成模塊(module)。每個模塊擁有自己的 state、mutation、action、getter.類似redux里面的reducer 針對每個組件對應的state狀態做處理
const moduleA = {
  state: { ... },
  mutations: { ... },
  actions: { ... },
  getters: { ... }
}

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

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

store.state.a // -> moduleA 的狀態
store.state.b // -> moduleB 的狀態

rootState

對于模塊內部的 action,局部狀態通過 context.state 暴露出來,根節點狀態則為 context.rootState。
rootState 可以獲取到所有mudule里面的state值

const moduleA = {
  // ...
  actions: {
    incrementIfOddOnRootSum ({ state, commit, rootState }) {
      if ((state.count + rootState.count) % 2 === 1) {
        commit("increment")
      }
    }
  }
}

這個還是要多看官方的demo

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

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

相關文章

  • 把手你學Dapr

    摘要:配置配置使用概率抽樣。采樣率定義了對跟蹤跨度進行采樣的概率,其值可以介于和含之間。例如,以下配置對象將采樣率更改為即每個跨度都被采樣,并使用協議將跟蹤發送到位于的服務器文件路徑注將采樣率更改為會完全禁用跟蹤。目錄手把手教你學Dapr - 1. .Net開發者的大時代手把手教你學Dapr - 2. 必須知道的概念手把手教你學Dapr - 3. 使用Dapr運行第一個.Net程序手把手教你學Da...

    qqlcbb 評論0 收藏0
  • 把手你學Vue-2(組件開發)

    摘要:組件聲明組件分為全局的和局部的。父組件通過給子組件下發數據,子組件通過事件給父組件發送消息。以下實例中子組件已經和它外部完全解耦了。 1.vue 組件-聲明 組件分為全局的和局部的。 全局聲明 Vue.component(tagName, options) ** 引用組件 // 注冊 Vue.comp...

    lansheng228 評論0 收藏0
  • 把手你學Vue-2(組件開發)

    摘要:組件聲明組件分為全局的和局部的。父組件通過給子組件下發數據,子組件通過事件給父組件發送消息。以下實例中子組件已經和它外部完全解耦了。 1.vue 組件-聲明 組件分為全局的和局部的。 全局聲明 Vue.component(tagName, options) ** 引用組件 // 注冊 Vue.comp...

    Null 評論0 收藏0

發表評論

0條評論

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