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

Vuex的五大核心詳細(xì)講解

 更新時(shí)間:2022年09月26日 10:07:02   作者:阿選不出來(lái)  
這篇文章主要為大家介紹了vuex的五個(gè)核心概念和基本使用,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助

1.什么是vuex

Vuex 是一個(gè)專為 Vue.js 應(yīng)用程序開發(fā)的狀態(tài)管理模式 + 庫(kù)。它采用集中式存儲(chǔ)管理應(yīng)用的所有組件的狀態(tài),并以相應(yīng)的規(guī)則保證狀態(tài)以一種可預(yù)測(cè)的方式發(fā)生變化。

2.什么時(shí)候用Vuex

  • 多個(gè)組件依賴于同一狀態(tài).
  • 來(lái)自不同組件的行為需要變更同一狀態(tài).

Vuex 可以幫助我們管理共享狀態(tài),并附帶了更多的概念和框架。這需要對(duì)短期和長(zhǎng)期效益進(jìn)行權(quán)衡。如果您不打算開發(fā)大型單頁(yè)應(yīng)用,使用 Vuex

可能是繁瑣冗余的。如果您需要構(gòu)建一個(gè)中大型單頁(yè)應(yīng)用,您很可能會(huì)考慮如何更好地在組件外部管理狀態(tài),Vuex 將會(huì)成為自然而然的選擇。

3.搭建vuex環(huán)境

安裝:

npm install vuex@next --save

創(chuàng)建文件: src/store/index.js

// 引入Vue核心庫(kù)
import Vue from 'vue'
// 引入Vuex
import Vuex from 'vuex'
//應(yīng)用Vuex插件
Vue.use(Vuex)
//準(zhǔn)備actions對(duì)象---響應(yīng)組件中用戶的動(dòng)作
const actions = {}
//準(zhǔn)備mutation對(duì)象---修改state中的數(shù)據(jù)
const mutation = {}
//準(zhǔn)備state對(duì)象---保存具體的數(shù)據(jù)
const state = {}
// 創(chuàng)建并暴露store
export default new Vuex.store({
    actions,
    mutation,
    state
})

main.js中創(chuàng)建vm時(shí)傳入 store配置項(xiàng)

......
// 引入store
import store from './store'
......
//創(chuàng)建vm
new  Vue({
    el: '#app',
    render: h => h(app),
    store
})

4.五個(gè)核心

基礎(chǔ)使用:

初始化數(shù)據(jù), 配置 action, 配置 mutations , 操作文件 store.js

// 引入Vuex 核心庫(kù)
import Vue from 'vue'
// 引入Vuex
import Vuex from 'vuex'
// 引用Vuex
Vue.use(Vuex)
const actions = {
    //響應(yīng)組件中的動(dòng)作
    jia(context, value) {
       context.commit('JIA',value)
    },
    jian(context, value) {
        context.commit('JIAN', value)
    }
}
const mutations = {
    //執(zhí)行加
    JIA(state, value) {
        state.sum += value
    }
}
// 初始化數(shù)據(jù)
const state = {
    sum:0
}
//創(chuàng)建并暴露store
export default new Vuex.Store({
    actions,
    mutations,
    state
})

組件中讀取vuex中的數(shù)據(jù): $store.state.sum

組件中修改vuex中的數(shù)據(jù): $store.dispatch('action中的方法名', 數(shù)據(jù))$store.commit('mutation中的方法名', 數(shù)據(jù))

備 注 : 若 沒 有 網(wǎng) 絡(luò) 請(qǐng) 求 或 其 他 業(yè) 務(wù) 邏 輯 , 組 件 中 也 可 以 越 過 a c t i o n s , 既 不 寫 d i s p a t c h , 直 接 編 寫 c o m m i t 備注: 若沒有網(wǎng)絡(luò)請(qǐng)求或其他業(yè)務(wù)邏輯, 組件中也可以越過actions, 既不寫 dispatch, 直接編寫commit 備注:若沒有網(wǎng)絡(luò)請(qǐng)求或其他業(yè)務(wù)邏輯,組件中也可以越過actions,既不寫dispatch,直接編寫commit

State

用于初始化數(shù)據(jù),提供唯一的公共數(shù)據(jù)源,所有共享的數(shù)據(jù)統(tǒng)一放到store的state進(jìn)行儲(chǔ)存,相似與data

組件內(nèi)通過 this.$store.state.count 訪問到.

HTML內(nèi)通過 $store.state.count 訪問到.

Mutation

更改 Vuex 的 store 中的狀態(tài)的唯一方法是提交 mutation

Vuex 中的 mutation 非常類似于事件:每個(gè) mutation 都有一個(gè)字符串的事件類型 (type)和一個(gè)回調(diào)函數(shù) (handler)。這個(gè)回調(diào)函數(shù)就是我們實(shí)際進(jìn)行狀態(tài)更改的地方,并且它會(huì)接受 state 作為第一個(gè)參數(shù):

  mutations: {
    increment (state) {
      // 變更狀態(tài)
      state.count++
    }
  }

調(diào)用

在組件中使用:this.$store.commit('increment')

提交載荷 : this.$store.commit('increment',10) 你可以向 store.commit 傳入額外的參數(shù),即 mutation 的載荷(payload), 參數(shù)可以是字符串也可以是對(duì)象. 對(duì)象風(fēng)格的提交方式:

this.$store.commit({
  type: 'increment',
  amount: 10
})

注意::: mutation 必須是同步函數(shù)

Action

Action 提交的是 mutation,而不是直接變更狀態(tài)。 Action 可以包含任意異步操作。

使用-參數(shù)

Action 函數(shù)接受一個(gè)與 store 實(shí)例具有相同方法和屬性的 context 對(duì)象,因此你可以調(diào)用 context.commit 提交一個(gè) mutation,或者通過 context.statecontext.getters 來(lái)獲取 state 和 getters。

調(diào)用

在組件內(nèi) : this.$store.dispatch('increment')

// 以載荷形式分發(fā)
this.$store.dispatch('incrementAsync', {
  amount: 10
})
// 以對(duì)象形式分發(fā)
this.$store.dispatch({
  type: 'incrementAsync',
  amount: 10
})

getters

概念: 當(dāng)state中的數(shù)據(jù)需要經(jīng)過加工后在使用時(shí), 可以使用getters加工.

store.js 中追加 getters 配置

......
const getters = {
    bigSum(state){
        return state.sum * 10
    }
}
//創(chuàng)建并暴露store
export default new Vuex.store({
    ......
    getters
})

組件中讀取數(shù)據(jù): $store.getters.bigSum

Modules

目的: 讓代碼更好維護(hù), 讓多種數(shù)據(jù)分類更加明確.

修改 store.js

const countAbout = {
    namespaced:true,
    actions:{.....},
    mutations:{.....},
    state:{......},
    getters:{...},
}
const personAbout = {
    namespaced:true,
    actions:{.....},
    mutations:{.....},
    state:{......},
    getters:{...},
}
const store = new Vue.store({
     modules: {
           countAbout,
           personAbout
          }
})

開啟命名空間后, 組件中讀取state數(shù)據(jù):

// 方式一: 自己直接讀取
this.$store.state.personAbout.list
// 方式二: 借助mapState讀取
...mapState('countAbout',['sum','school', 'subject'])

開啟命名空間后, 組件中讀取getters數(shù)據(jù):

// 方式一: 自己直接讀取
this.$store.getters['personAbout/firstPersonName']
// 方式二: 借助mapGetters讀取
...mapGetters('countAbout',['bigSum'])

開啟命名空間后, 組件中調(diào)用dispath

// 方式一: 自己直接dispath
this.$store.dispath('personAbout/addPersonWang', person]
// 方式二: 借助mapActions讀取
...mapActions('countAbout',{incrementOdd: 'jiaOdd', incrementWait: 'jiaWait'})

開啟命名空間后, 組件中調(diào)用commit

// 方式一: 自己直接commit
this.$store.commit('personAbout/ADD_PERSON',person)
// 方式二: 借助mapMutations讀取
...mapMutations('countAbout',{increment: 'JIA', decrement: 'JIAN'})

5.四個(gè)map方法的使用

mapState方法: 用于幫助我們映射 state 中的數(shù)據(jù)為計(jì)算屬性.

computed: {
    //借助mapState生成計(jì)算屬性, sum,school,subject (對(duì)象寫法)
    ...mapState({sum:'sum', school:'school', subject:'subject'})
    //借助mapState生成計(jì)算屬性, sum,school,subject (數(shù)組寫法)
    ...mapState(['sum','school','subject'])
}

2.**mapGetters方法:**用于幫助我們映射 getters中的數(shù)據(jù)為計(jì)算屬性.

computed: {
    //借助mapGetters生成計(jì)算屬性, bigSum (對(duì)象寫法)
    ...mapGetters({bigSum:'bigSum'}),
    //借助mapGetters生成計(jì)算屬性, bigSum (數(shù)組寫法)
     ...mapGetters(['bigSum']),
}

**mapActions方法:**用于幫助我們生成與 action 對(duì)話的方法, 即 : 包含 $store.dispath(xxx) 的函數(shù)

methods: {
    //靠mapActions生成, incrementOdd, incrementWait (對(duì)象形式)
    ...mapActions({incrementOdd:'jiaOdd', incrementWait:'jiaWait'}),
     //靠mapActions生成, incrementOdd, incrementWait (數(shù)組形式)
    ...mapActions(['jiaOdd','jiaWait']),
}

mapMutations方法: 用于幫助我們生成與 mutations 對(duì)話的方法, 即: 包含 $store.commit(xxx) 的函數(shù)

methods: {
    //靠mapMutations生成, increment, decrement (對(duì)象形式)
     ...mapActions({increment:'JIA', decrement:'JIAN'}),
     //靠mapMutations生成, JIA,JIAN (數(shù)組形式)
     ...mapActions(['JIA','JIAN']),
}

到此這篇關(guān)于Vuex的五大核心詳細(xì)講解的文章就介紹到這了,更多相關(guān)Vuex核心內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue中js判斷長(zhǎng)時(shí)間不操作界面自動(dòng)退出登錄(推薦)

    vue中js判斷長(zhǎng)時(shí)間不操作界面自動(dòng)退出登錄(推薦)

    這篇文章主要介紹了vue中js判斷長(zhǎng)時(shí)間不操作界面自動(dòng)退出登錄,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-01-01
  • 利用HBuilder打包前端開發(fā)webapp為apk的方法

    利用HBuilder打包前端開發(fā)webapp為apk的方法

    下面小編就為大家?guī)?lái)一篇利用HBuilder打包前端開發(fā)webapp為apk的方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2017-11-11
  • Vue實(shí)現(xiàn)簡(jiǎn)單可擴(kuò)展甘特圖的方法詳解

    Vue實(shí)現(xiàn)簡(jiǎn)單可擴(kuò)展甘特圖的方法詳解

    Ganttastic是一個(gè)小型的Vue.js組件,用于在Web應(yīng)用程序上呈現(xiàn)一個(gè)可配置的、可拖動(dòng)的甘特圖。本文就將用它來(lái)實(shí)現(xiàn)簡(jiǎn)單可擴(kuò)展的甘特圖,感興趣的可以嘗試一下
    2022-11-11
  • vue實(shí)現(xiàn)多個(gè)數(shù)組合并

    vue實(shí)現(xiàn)多個(gè)數(shù)組合并

    這篇文章主要介紹了vue實(shí)現(xiàn)多個(gè)數(shù)組合并方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • 詳解vue文件中使用echarts.js的兩種方式

    詳解vue文件中使用echarts.js的兩種方式

    這篇文章主要介紹了詳解vue文件中使用echarts.js的兩種方式,主要介紹了兩種使用方式,一種是以組件的形式另一種直接引入,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2018-10-10
  • vue 怎么創(chuàng)建組件及組件使用方法

    vue 怎么創(chuàng)建組件及組件使用方法

    vue中的核心就是組件,組件 (Component) 是 Vue.js 最強(qiáng)大的功能之一。組件可以擴(kuò)展 HTML 元素,封裝可重用的代碼,下面通過本文重點(diǎn)給大家介紹vue 創(chuàng)建組件及組件使用方法,感興趣的朋友一起看看吧
    2017-07-07
  • vue cli實(shí)現(xiàn)項(xiàng)目登陸頁(yè)面流程詳解

    vue cli實(shí)現(xiàn)項(xiàng)目登陸頁(yè)面流程詳解

    CLI是一個(gè)全局安裝的npm包,提供了終端里的vue命令。它可以通過vue create快速搭建一個(gè)新項(xiàng)目,或者直接通過vue serve構(gòu)建新想法的原型。你也可以通過vue ui通過一套圖形化界面管理你的所有項(xiàng)目
    2022-10-10
  • VUE3基于vite封裝條形碼和二維碼組件的詳細(xì)過程

    VUE3基于vite封裝條形碼和二維碼組件的詳細(xì)過程

    基礎(chǔ)組件開發(fā)是項(xiàng)目業(yè)務(wù)開發(fā)的基石, 本文主要介紹了通過vue3的vite腳手架快速搭建項(xiàng)目, 開發(fā)條形碼和二維碼組件的過程,感興趣的朋友跟隨小編一起看看吧
    2023-08-08
  • Vue2和Vue3中常用組件通信用法分享

    Vue2和Vue3中常用組件通信用法分享

    這篇文章主要為大家整理了Vue3的8種和Vue2的12種組件通信的使用方法,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Vue有一定的幫助,值得收藏
    2023-04-04
  • Vue仿微信app頁(yè)面跳轉(zhuǎn)動(dòng)畫效果

    Vue仿微信app頁(yè)面跳轉(zhuǎn)動(dòng)畫效果

    這篇文章主要介紹了Vue仿微信app頁(yè)面跳轉(zhuǎn)動(dòng)畫效果,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-08-08

最新評(píng)論

石城县| 龙山县| 靖江市| 昂仁县| 成安县| 教育| 浮山县| 承德市| 元氏县| 土默特左旗| 桓台县| 肇庆市| 濮阳市| 武陟县| 辉南县| 泾川县| 凯里市| 柳州市| 巢湖市| 台东县| 望谟县| 新乡市| 齐齐哈尔市| 土默特左旗| 基隆市| 贵阳市| 响水县| 东乌| 胶南市| 山阳县| 岳阳县| 汉沽区| 青川县| 临邑县| 那曲县| 永泰县| 定西市| 桑植县| 双柏县| 奉贤区| 大冶市|