91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Vuex3和Vuex4的區別是什么

發布時間:2023-04-20 11:46:50 來源:億速云 閱讀:143 作者:iii 欄目:開發技術

這篇文章主要講解了“Vuex3和Vuex4的區別是什么”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Vuex3和Vuex4的區別是什么”吧!

Vuex 是 Vue.js 的官方狀態管理庫,用于在 Vue.js 應用中管理應用狀態。Vuex 3 是用于 Vue 2 的版本,而 Vuex 4 是用于 Vue 3 的版本。下面是 Vuex 3 和 Vuex 4 在一些重要方面的異同點:

創建 Store 的方式

  • Vuex 3:使用 new Vuex.Store() 創建 store 實例

import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

const store = new Vuex.Store({
  // 配置項
})

export default store
  • Vuex 4:使用 createStore 函數創建 store 實例

import { createStore } from 'vuex'

const store = createStore({
  // 配置項
})

export default store

Vuex 4 中使用 createStore 函數來創建 store 實例,而不是直接在 Vue 實例上掛載。

在組件中使用 Store

  • Vuex 3:使用 this.$store 訪問 store 實例,通過 this.$store.state 訪問狀態,通過 this.$store.commit() 進行提交 mutation,通過 this.$store.dispatch() 進行分發 action。

export default {
  computed: {
    count() {
      return this.$store.state.count
    }
  },
  methods: {
    increment() {
      this.$store.commit('increment')
    },
    incrementAsync() {
      this.$store.dispatch('incrementAsync')
    }
  }
}
  • Vuex 4:使用 useStore 函數來獲取 store 實例,通過 store.state 訪問狀態,通過 store.commit() 進行提交 mutation,通過 store.dispatch() 進行分發 action。

import { useStore } from 'vuex'

export default {
  setup() {
    const store = useStore()
    const count = computed(() => store.state.count)

    const increment = () => {
      store.commit('increment')
    }

    const incrementAsync = () => {
      store.dispatch('incrementAsync')
    }

    return {
      count,
      increment,
      incrementAsync
    }
  }
}

雖然 Vuex4 推薦使用更符合 Composition API 風格的 useStore() 來獲取 store 實例。但是并沒有移除 this.$store,但是在 <template>Vue2 選項式寫法中還是支持使用 $store 的。

輔助函數的用法

  • Vuex 3:使用 mapStatemapGettersmapMutationsmapActions 輔助函數來進行映射,簡化在組件中對 store 的訪問。

import { mapState, mapGetters, mapMutations, mapActions } from 'vuex'

export default {
  computed: {
    ...mapState(['count']),
    ...mapGetters(['doubleCount']),
  },
  methods: {
    ...mapMutations(['increment']),
    ...mapActions(['incrementAsync']),
  }
}
  • Vuex 4:使用 Composition API 中的 computed 函數和普通的 JavaScript 函數來實現類似的功能。

import { computed, useStore } from 'vuex'

export default {
  setup() {
    const store = useStore()

    const count = computed(() => store.state.count)
    const doubleCount = computed(() => store.getters.doubleCount)

    const increment = () => {
      store.commit('increment')
    }

    const incrementAsync = () => {
      store.dispatch('incrementAsync')
    }

    return {
      count,
      doubleCount,
      increment,
      incrementAsync
    }
  }
}

Vuex4 支持選項式寫法的輔助函數,在使用時和 Vuex3 一模一樣的。但是需要注意輔助函數不能在組合式寫法 setup 中使用。

響應式的改進

  • Vuex 3:使用 Vue 2 的響應式系統 ( Object.defineProperty ) 進行狀態的監聽和更新。

  • Vuex 4:使用 Vue 3 的響應式系統 ( proxy ) 進行狀態的監聽和更新,可以利用 Composition API 中的 reactivecomputed 函數進行更加靈活和高效的狀態管理。

實質上這是 Vue2 和 Vue3 的區別,只是由于 Vue 2 匹配的 Vuex 3,Vue 3 匹配的 Vuex 4 的原因,嚴格來說不能算作 Vuex3 與 Vuex4 的不同。

Vuex4 支持多例模式

Vuex 3 是單例模式的,即整個應用只能有一個全局的 Vuex Store 實例。而在 Vuex 4 中,你可以通過 useStore 函數在不同組件中創建多個獨立的 Vuex Store 實例,從而支持多例模式。

以下是一個示例展示了如何在 Vuex 4 中使用 useStore 輔助函數創建多個獨立的 Vuex Store 實例:

<template>
  <div>
    <p>Counter 1: {{ counter1 }}</p>
    <p>Counter 2: {{ counter2 }}</p>
    <button @click="incrementCounter1">Increment Counter 1</button>
    <button @click="incrementCounter2">Increment Counter 2</button>
  </div>
</template>

<script>
import { useStore } from 'vuex'

export default {
  setup() {
    // 使用 useStore 輔助函數創建 Vuex Store 實例
    const store1 = useStore('store1')
    const store2 = useStore('store2')

    // 通過 store1.state.count 獲取第一個 Store 的狀態
    const count1 = store1.state.count
    // 通過 store2.state.count 獲取第二個 Store 的狀態
    const count2 = store2.state.count

    // 通過 store1.commit() 提交 mutations 到第一個 Store
    const incrementCounter1 = () => {
      store1.commit('increment')
    }

    // 通過 store2.commit() 提交 mutations 到第二個 Store
    const incrementCounter2 = () => {
      store2.commit('increment')
    }

    return {
      count1,
      count2,
      incrementCounter1,
      incrementCounter2
    }
  }
}
</script>

上述示例展示了如何在 Vue 組件中使用 useStore 輔助函數創建多個獨立的 Vuex Store 實例,并通過這些實例分別訪問和修改各自的狀態和 mutations。這是 Vuex 4 相對于 Vuex 3 的一個重要的改進,使得 Vuex 在支持多例模式的場景下更加靈活和可擴展。

感謝各位的閱讀,以上就是“Vuex3和Vuex4的區別是什么”的內容了,經過本文的學習后,相信大家對Vuex3和Vuex4的區別是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

罗平县| 台州市| 新乐市| 雷波县| 琼结县| 松滋市| 大港区| 留坝县| 宁都县| 兰州市| 九龙坡区| 云阳县| 无极县| 潮安县| 辽宁省| 郴州市| 和田市| 房产| 阜阳市| 海口市| 温州市| 理塘县| 江油市| 那曲县| 乌鲁木齐市| 渑池县| 册亨县| 饶阳县| 高陵县| 旬邑县| 九龙坡区| 城步| 衡阳县| 大宁县| 简阳市| 年辖:市辖区| 固安县| 正阳县| 伊春市| 安龙县| 左云县|