最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

關(guān)于vuex的原理及使用方法

 更新時間:2025年01月15日 15:02:05   作者:Cshaosun  
Vuex是Vue.js應(yīng)用的狀態(tài)管理模式,用于集中式管理應(yīng)用狀態(tài),它包括state、getters、mutations、actions和modules等模塊,適用于多組件共享的數(shù)據(jù)管理

簡介

Vuex 是 Vue.js 應(yīng)用的狀態(tài)管理模式,它為應(yīng)用內(nèi)的所有組件提供集中式的狀態(tài)(數(shù)據(jù))管理。

可以幫我們管理 Vue 通用的數(shù)據(jù) (多組件共享的數(shù)據(jù))。

Vuex的構(gòu)成

  • statestate 是 Vuex 的數(shù)據(jù)中心,也就是說state是用來存儲數(shù)據(jù)的。
  • gettersstate 對象讀取方法。Vue Components 通過該方法讀取全局 state 對象。
  • mutations狀態(tài)改變操作方法。是 Vuex 修改 state 的唯一推薦方法,其他修改方式在嚴(yán)格模式下將會報錯。 該方法只能進(jìn)行同步操作, 且方法名只能全局唯一。 操作之中會有一些 hook 暴露出來, 以進(jìn)行state 的監(jiān)控等。
  • actions操作行為處理模塊。 負(fù)責(zé)處理 Vue Components 接收到的所有交互行為。 包含同步/異步操作, 支持多個同名方法, 按照注冊的順序依次觸發(fā)。 向后臺 API 請求的操作就在這個模塊中進(jìn)行, 包括觸發(fā)其他 action 以及提交 mutation 的操作。 該模塊提供了 Promise的封裝, 以支持 action 的鏈?zhǔn)接|發(fā)。
  • modules將 Store 分割成模塊,每個模塊擁有自己的 State、Getters、Mutations Actions。

Vuex的使用

1、安裝 Vuex:npm install vuex。

2、創(chuàng)建store示例

store對象

import Vue from 'vue';
import Vuex from 'vuex';
 
Vue.use(Vuex);
 
export default new Vuex.Store({
  state: {
    count: 0
  },
  mutations: {
    increment(state) {
      state.count++;
    }
  },
  actions: {
    increment({ commit }) {
      commit('increment');
    }
  },
  getters: {
    count: state => state.count
  }
});

在 Vue 根實例中注冊store

import Vue from 'vue';
import App from './App.vue';
import store from './store';
 
new Vue({
  store,
  render: h => h(App)
}).$mount('#app');

在組件中使用 Store

export default {
  computed: {
    count() {
      return this.$store.state.count;
    }
  },
  methods: {
    increment() {
      this.$store.dispatch('increment');
    }
  }
};

使用Vuex內(nèi)容擴(kuò)展

在真正開發(fā)中使用vuex時會有好多細(xì)節(jié)知識和注意事項,下面我們擴(kuò)展一下,僅供參看

Vue 組件中獲得 Vuex 狀態(tài)(State)

方式一 this.$store.state獲取

通過在根實例中注冊 store 選項,該 store 實例會注入到根組件下的所有子組件中,且子組件能通過 this.$store 訪問到

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

方式二mapState 輔助函數(shù)獲?。ㄍ扑])

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

<template>
    <div>{{count}}</div>
</template>
<script>
import { mapState }from 'vuex
export default{
    computed:{
        ...mapstate(['count'])
    }
}
</script>

Getter的定義和獲取方式

定義getters:

需要顯示所有大于5的數(shù)據(jù),正常的方式,是需要list在組件中進(jìn)行再一步的處理,但是getters可以幫助我們實現(xiàn)它

【下面getters引用的state中的數(shù)據(jù):list: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]】

getters: {
    // getters函數(shù)的第一個參數(shù)是 state
    // 必須要有返回值
    filterList:  state =>  state.list.filter(item => item > 5)
}

獲取getters:

方式一: 通過屬性訪問

this.$store.getters.filterList

方式二:輔助函數(shù) - mapGetters

<template>
    <div>{{filterList}}</div>
</template>
<script>
import { mapGetters }from 'vuex
export default{
    computed:{
        ...mapGetters(['filterList'])
    }
}
</script>

Vue組件中調(diào)用Vuex:mutations中的方法

  • 直接通過 store 調(diào)用 $store.commit('模塊名/xxx ', 額外參數(shù))
  • 通過 mapMutations 映射

1、默認(rèn)根級別的映射 mapMutations([ ‘xxx’ ])

2、子模塊的映射 mapMutations(‘模塊名’, [‘xxx’]) - 需要開啟命名空間

方式一:普通調(diào)用方式

  • this.$store.commit('addCount') 此為不帶參數(shù)的寫法
  • this.$store.commit('addCount', 10) 此為帶參數(shù)寫法
<template>
    <div @click="addData">{{count}}</div>
</template>
<script>
export default{
    methods: {
        addData() {
            this.$store.commit('increment')
        }
    }
}
</script>

方式二:輔助函數(shù)- mapMutations

mapMutations是將所有mutations里面的方法映射為實例methods里面的方法

<template>
    <div @click="addData">{{count}}</div>
    <div @click="increment">{{count}}</div>
</template>
<script>
export default{
import  { mapMutations } from 'vuex'
    methods: {
        // 有別名的寫法[對應(yīng)第一行div]
        ...mapMutations({
             addData:'increment'
         })
        // 同名的簡寫[對應(yīng)第二行div]
        ...mapMutations(['increment'])
    }
}
</script>

Vue組件獲取Vuex:actions中的方法

  • 直接通過 store 調(diào)用 $store.dispatch('模塊名/xxx ', 額外參數(shù))
  • 通過 mapActions 映射

1、默認(rèn)根級別的映射 mapActions([ ‘xxx’ ])

2、子模塊的映射 mapActions(‘模塊名’, [‘xxx’]) - 需要開啟命名空間

方式一:普通調(diào)用方式

this.$store.dispatch('increment')
this.$store.dispatch('increment',{num: 10})
<template>
    <div @click="addData">{{count}}</div>
</template>
<script>
export default{
    methods: {
        addData() {
            this.$store.dispatch('increment')
        }
    }
}
</script>

方式二:輔助函數(shù) -mapActions

mapActions 是把位于 actions中的方法提取了出來,映射到組件methods中

<template>
    <div @click="increment">{{count}}</div>
</template>
<script>
export default{
import  { mapActions } from 'vuex'
    methods: {
        ...mapActions (['increment'])
    }
}
</script>

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue2.x+webpack快速搭建前端項目框架詳解

    vue2.x+webpack快速搭建前端項目框架詳解

    本文給大家介紹了vue2.x、webpack、vuex、sass+axios、elementUI等快速搭建前端項目框架的詳細(xì)操作方法,需要的跟著學(xué)習(xí)下吧。
    2017-11-11
  • 使用vant?自定義彈框全過程

    使用vant?自定義彈框全過程

    這篇文章主要介紹了使用vant?自定義彈框全過程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • vue+echarts實現(xiàn)中國地圖流動效果(步驟詳解)

    vue+echarts實現(xiàn)中國地圖流動效果(步驟詳解)

    這篇文章主要介紹了vue+echarts實現(xiàn)中國地圖流動效果(步驟詳解),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-01-01
  • Vue3+Ts+Vite項目websoket封裝使用方式

    Vue3+Ts+Vite項目websoket封裝使用方式

    文章介紹了如何封裝WebSocket并進(jìn)行頁面使用,包括安裝npm、創(chuàng)建websocket.ts文件、配置請求地址、全局類型聲明以及在頁面中引用和注冊
    2025-10-10
  • Vue-Cli配置代理轉(zhuǎn)發(fā)解決跨域問題的方法

    Vue-Cli配置代理轉(zhuǎn)發(fā)解決跨域問題的方法

    本文主要介紹了Vue-Cli配置代理轉(zhuǎn)發(fā)解決跨域問題的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • vite打包部署圖標(biāo)偶爾亂碼的問題及解決過程

    vite打包部署圖標(biāo)偶爾亂碼的問題及解決過程

    文章介紹了在使用Vite+Vue3項目打包時遇到的自定義圖標(biāo)偶爾亂碼問題的解決方法,通過研究vite.config.js的配置項,發(fā)現(xiàn)將cssMinify設(shè)置為false可以解決圖標(biāo)亂碼問題,同時并不會顯著增加打包文件的大小
    2025-12-12
  • Vue配置文件中的devServer proxy配置全過程

    Vue配置文件中的devServer proxy配置全過程

    文章介紹了如何在代理服務(wù)器中配置axios請求,包括單個接口和多個接口的情況,通過配置proxy,可以將請求轉(zhuǎn)發(fā)到不同的后端服務(wù)器,并且可以處理跨域請求和路徑重寫
    2025-12-12
  • 使用Vue CLI創(chuàng)建typescript項目的方法

    使用Vue CLI創(chuàng)建typescript項目的方法

    這篇文章主要介紹了使用Vue CLI創(chuàng)建typescript項目的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • vue中的keep-alive用法指南

    vue中的keep-alive用法指南

    keep-alive是Vue中的一個內(nèi)置組件,用于緩存非活動組件實例,避免重復(fù)渲染,優(yōu)化性能,本文給大家介紹vue中的keep-alive用法指南,感興趣的朋友一起看看吧
    2024-10-10
  • Vue中使用表單驗證+CRUD方式

    Vue中使用表單驗證+CRUD方式

    本文介紹了如何在后臺添加數(shù)據(jù)接口,并詳細(xì)講解了如何在前端使用表格進(jìn)行增刪改查操作,包括新增、修改和刪除功能的實現(xiàn),以及如何使用表單驗證確保數(shù)據(jù)的準(zhǔn)確性
    2026-03-03

最新評論

康乐县| 襄垣县| 茂名市| 称多县| 波密县| 德格县| 通州区| 微山县| 曲靖市| 盐源县| 台中市| 波密县| 长武县| 滦南县| 清涧县| 彰武县| 合水县| 百色市| 独山县| 双牌县| 庆元县| 平顶山市| 永丰县| 崇左市| 乃东县| 怀仁县| 岑巩县| 崇礼县| 翁牛特旗| 盘锦市| 高陵县| 宁阳县| 巨野县| 论坛| 广州市| 西青区| 云阳县| 东海县| 岐山县| 土默特左旗| 镇雄县|