中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

Vuex的使用實例分析

發布時間:2022-03-07 15:30:42 來源:億速云 閱讀:145 作者:iii 欄目:web開發

這篇文章主要介紹“Vuex的使用實例分析”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“Vuex的使用實例分析”文章能幫助大家解決問題。

Vuex 簡介

1. 概念

在 Vue 中實現集中式狀態(數據)管理的一個 Vue 插件,對 vue 應用中多個組件的共享狀態進行集中式的管理(讀/寫),也是一種組件間通信的方式,且適用于任意組件間的通信

2. 使用場景

多個組件依賴于同一狀態

來自不同組件的行為需要變更同一狀態

3.  Vuex 工作原理

State 是存儲的單一狀態,是存儲的基本數據(把改變的數據給到 Vue Components)

Getters 是 store 的計算屬性,對 state 的加工,是派生出來的數據。就像 computed 計算屬性一樣,getter 返回的值會根據它的依賴被緩存起來,且只有當它的依賴值發生改變才會被重新計算

Actions 像一個裝飾器,提交 mutation,而不是直接變更狀態(actions 可以包含任何異步操作,如果有什么限制判斷條件,也是在 actions 中進行操作)

Mutations 提交更改數據,使用 store.commit 方法更改 state 存儲的狀態(在 Mutations 不做任何判斷等操作,只做數據的處理,如果不需要進行異步處理,可以直接把數據交到這里)

Module 是 store 分割的模塊,每個模塊擁有自己的 state、getters、mutations、actions

Vuex 提供了 mapState、MapGetters、MapActions、mapMutations 等輔助函數給開發在 vm 中處理的 store

這里有一個很好理解 Vuex 的方法:把 Vue Components 當作是去餐廳吃飯的顧客,Actions 就是餐廳的服務員,Mutations 是餐廳的后廚,State 是做好的菜,最后再展現給顧客。所以有什么需求找 Actions 說就可以了,Mutations 只負責做菜

4. 搭建 Vuex 環境

1)打開 VScode 的控制臺,輸入 npm i vuex 進行安裝,也可以通過 Vuex 進行下載安裝

2)創建一個 store 文件夾,且在該文件夾中創建一個 index.js 文件,文件中引入 import vuex from 'vuex',通過 Vue.use(Vuex) 就可以使用它了

3)在該 index.js 文件中配置 store,并配置暴露相關對象 export default new Vuex.Store({})

4)再在 main.js 文件中引入 store,import store from './store' (這里引入的其實是 store 文件夾下的 index.js 文件,因為默認找的就是文件夾的 index ,所以可以不寫),在 Vue 實例對象中引用,即寫上 store,這樣組件實例對象和 vm 上就都能看到 store 了

下面我們用 vuex 來寫一個案例:(最終的頁面效果如下圖所示)

前面進行選擇每次要加的數,點擊加號可往上加,點擊減號也會對應的減,當當前求和的為奇數時,后一個按鈕才有效,等一等再加,就是延遲 0.5 s 后再加

Count.vue 計算組件代碼(實現頁面的布局和調用方法)

<template>

    <!-- 實現頁面的布局 -->

    <div>

        <h2>當前求和為:{{$store.state.sum}}</h2>

        <select v-model.number="n">

            <option value="1">1</option>

            <option value="2">2</option>

            <option value="3">3</option>

        </select>

        <button @click="increment">+</button>

        <button @click="decrement">-</button>

        <button @click="incrementOdd">當前求和為奇數再加</button>

        <button @click="incrementWait">等一等再加</button>

    </div>

</template>

<script>

export default {

    name:'Count',

    data(){

        return {

            n:1,  //用戶選擇的數字

        }

    },

    methods: {

        increment(){

            this.$store.commit('ADD',this.n)

            //通過 commit 調用 Mutations 里面的 ADD 方法

        },

        decrement(){

          this.$store.commit('DECREASE',this.n)

           //通過 commit 調用 Mutations 里面的 DECREASE 方法

        },

        incrementOdd(){

          this.$store.dispatch('addOdd',this.n)

          // 通過 dispatch 調用 actions 里面的 addOdd 方法

        },

        incrementWait(){

          this.$store.dispatch('addWait',this.n)

          // 通過 dispatch 調用 actions 里面的 addWait 方法

        },

    },

}

</script>

<style lang="css">

    button{

        margin-left: 5px

    }

</style>

組件中讀取 vuex 中的數據:$store.state.sum 

組件中修改 vuex 中的數據:$store.dispatch('actions中的方法名',數據) 或 $store.commit('mutations中的方法名',數據)

Store 文件夾中的 index.js 代碼(用 vuex 配置相關的函數或方法)

//該文件用于創建 Vue 中最核心的 store

import Vue from 'vue'

//引入Vuex

import Vuex from 'vuex'

// 應用 Vuex 插件

Vue.use(Vuex)

//準備 actions 用于響應組件中的動作

const actions = {

    // 實現為奇數的時候才加操作

    addOdd(context,value) {

        if (context.state.sum % 2) {

            context.commit('ADDODD',value)

        }

    },

    // 實現等到 0.5 s 才加的操作

    addWait(context, value) {

        setTimeout(() => {

            context.commit('ADDWAIT',value)

        }, 500);

    }

}

//準備 mutations 用于操作數據(state)

const mutations = {

    //加操作

    ADD(state,value) {

        state.sum += value

    },

    //減操作

    DECREASE(state, value) {

        state.sum -= value

    },

    ADDODD(state, value) {

        state.sum += value

    },

    ADDWAIT(state, value) {

        state.sum += value

    }

}

//準備 state 用于存儲數據

const state = {

    sum: 0  //當前的和

}

//創建并暴露 store

export default new Vuex.Store({

    actions,

    mutations,

    state

})

其中 actions 對象中的每個方法都有一個 context 和 value 形參,context 里面存放著基本你要用的所有數據,value 就是你傳進來的數據

其中 mutations 對象中的每個方法都有 state 和 value 形參,第一個里面存放有 state 中的數據,value 也是傳進來的數據

App.vue

<template>

  <Count />

</template>

<script>

import Count from './components/Count.vue'

export default {

  name: "App",

  components: {

    Count,

  },

}

</script>

main.js

//引入 Vue 

import Vue from 'vue'

//引入 App 

import App from './App.vue'

//引入 store

import store from './store/index.js'

Vue.config.productionTip = false

const vm = new Vue({

  render: h => h(App),

  store,  //使用 store

}).$mount('#app')

關于“Vuex的使用實例分析”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。

向AI問一下細節

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

AI

宁海县| 阿瓦提县| 攀枝花市| 文登市| 新民市| 泰安市| 开封县| 彭水| 五寨县| 调兵山市| 耒阳市| 珠海市| 万安县| 江山市| 泰来县| 北辰区| 临桂县| 红桥区| 扎囊县| 邹平县| 台湾省| 卢氏县| 拉萨市| 晋江市| 沧源| 慈溪市| 水城县| 疏勒县| 通化县| 河池市| 浦北县| 綦江县| 建始县| 三原县| 台江县| 东兰县| 正安县| 乐昌市| 姜堰市| 嘉义县| 西林县|