<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        Vuex 入門教程

        來源:懂視網 責編:小采 時間:2020-11-27 22:21:58
        文檔

        Vuex 入門教程

        Vuex 入門教程:Vuex 是什么? 官方給出的解釋:Vuex 是一個專為 Vue.js 應用程序開發的狀態管理模式。它采用集中式存儲管理應用的所有組件的狀態,并以相應的規則保證狀態以一種可預測的方式發生變化。 相信很多新選手看完這段話有種絕望的感覺。開始我也是這樣的,后來我想
        推薦度:
        導讀Vuex 入門教程:Vuex 是什么? 官方給出的解釋:Vuex 是一個專為 Vue.js 應用程序開發的狀態管理模式。它采用集中式存儲管理應用的所有組件的狀態,并以相應的規則保證狀態以一種可預測的方式發生變化。 相信很多新選手看完這段話有種絕望的感覺。開始我也是這樣的,后來我想

        Vuex 是什么?

        官方給出的解釋:Vuex 是一個專為 Vue.js 應用程序開發的狀態管理模式。它采用集中式存儲管理應用的所有組件的狀態,并以相應的規則保證狀態以一種可預測的方式發生變化。

        相信很多新選手看完這段話有種絕望的感覺。開始我也是這樣的,后來我想到了一個比方!

        比如某年級有5個小班,每個小班有25個同學,但是只有一個老師授課,假如5個小班就對應著5個組件,每個班的25個同學就相當于每個組件中的25條數據,這個老師就相當于 vuex ,老師講的課就相當于每一條數據。要保證每個同學受到同樣的教育,就需要這個老師把每節課分別講5遍,還不能保證每個班的同學聽到的效果相同。一段時間后,老師覺得這樣特別麻煩還很累,就想了一個辦法,找了一個大教室,把這5個小班的同學合并到一起,這樣每個課程只需要講一次就好啦,而且還保證了每個班的同學聽到的效果相同。這就是 vuex 的作用,把各個組件中用到的數據統一管理,同步發放,省時省心省力。

        那這個 vuex 怎么用呢?讓我們從一個簡單的 Vue 計數應用開始

        一、基本用法

        1. 初始化并創建一個項目

        vue init webpack-simple vuex-demo
        cd vuex-demo
        npm install

        2. 安裝 vuex

        npm install vuex -S

        3. 在 src 目錄下創建 store.js 文件,并在 main.js 文件中導入并配置

        store.js 中寫入

        import Vue from 'vue'
        //引入 vuex 并 use
        import Vuex from 'vuex'
        Vue.use(Vuex)

        main.js 文件

        import Vue from 'vue'
        import App from './App.vue'
        import store from './assets/store' //導入 store 對象
        
        new Vue({
         //配置 store 選項,指定為 store 對象,會自動將 store 對象注入到所有子組件中,在子組件中通過 this.$store 訪問該 store 對象 
         store, 
         el: '#app',
         render: h => h(App)
        })
        

        4. 編輯 store.js 文件

        在應用 vuex 之前,我們還是需要看懂這個流程圖,其實很簡單。

        vuex

        ① Vue Components 是我們的 vue 組件,組件會觸發(dispatch)一些事件或動作,也就是圖中的 Actions;
        ② 我們在組件中發出的動作,肯定是想獲取或者改變數據的,但是在 vuex 中,數據是集中管理的,我們不能直接去更改數據,所以會把這個動作提交(Commit)到 Mutations 中;
        ③ 然后 Mutations 就去改變(Mutate)State 中的數據;
        ④ 當 State 中的數據被改變之后,就會重新渲染(Render)到 Vue Components 中去,組件展示更新后的數據,完成一個流程。

        Vuex 的核心是 Store(倉庫),相當于是一個容器,一個 Store 實例中包含以下屬性的方法:

        state 定義屬性(狀態 、數據)

        store.js 中寫入

        // 定義屬性(數據)
        var state = {
         count:6
        }
        // 創建 store 對象
        const store = new Vuex.Store({
         state
        })
        
        // 導出 store 對象
        export default store;
        
        

        方式1、 在 app.vue 中就能通過 this.$store 訪問該 store 對象 ,獲取該 count 。

        <template>
         <div id="app">
         //把 count 方法直接寫入,可自己執行
         <h1>{{count}}</h1>
         </div>
        </template>
        
        <script>
        export default {
         name: 'app',
         computed:{
         count(){
         //返回獲取到的數據
         return this.$store.state.count
         }
         }
        }
        </script>
        
        

        方式2、vuex 提供的 mapGetters 和 mapActions 來訪問

        mapGetters 用來獲取屬性(數據)

        ① 在 app.vue 中引入 mapGetters

        import {mapGetters} from 'vuex'

        ② 在 app.vue 文件的計算屬性中調用 mapGetters 輔助方法,并傳入一個數組,在數組中指定要獲取的屬性  count

        <script>
        import {mapGetters,mapActions} from 'vuex'
        export default {
         name: 'app',
         computed:mapGetters([
         //此處的 count 與以下 store.js 文件中 getters 內的 count 相對應
         'count'
         ])
        }
        </script>
        

        ③ 在 store.js 中定義 getters 方法并導出

        getters 用來獲取屬性

        import Vue from 'vue'
        import Vuex from 'vuex'
        Vue.use(Vuex)
        
        // 定義屬性(數據)
        var state = {
         count:6
        }
        // 定義 getters
        var getters={
         //需要傳個形參,用來獲取 state 屬性
         count(state){
         return state.count
         }
        }
        // 創建 store 對象
        const store = new Vuex.Store({
         state,
         getters
        })
        
        // 導出 store 對象
        export default store;
        
        

        這樣頁面上就會顯示傳過來的數據了!接下來我們來通過動作改變獲取到的數據

        ④在 store.js 中定義 actions 和 mutations 方法并導出

        actions 定義方法(動作)

        commit 提交變化,修改數據的唯一方式就是顯示的提交 mutations

        mutations 定義變化,處理狀態(數據)的改變

        import Vue from 'vue'
        import Vuex from 'vuex'
        Vue.use(Vuex)
        
        // 定義屬性(數據)
        var state = {
         count:6
        }
        
        // 定義 getters
        var getters={
         count(state){
         return state.count
         }
        }
        
        // 定義 actions ,要執行的動作,如流程的判斷、異步請求
        const actions ={
         // ({commit,state}) 這種寫法是 es6 中的對象解構
         increment({commit,state}){
         //提交一個名為 increment 的變化,名字可自定義,可以認為是類型名,與下方 mutations 中的 increment 對應
         //commit 提交變化,修改數據的唯一方式就是顯式的提交 mutations
         commit('increment') 
         }
        }
        
        // 定義 mutations ,處理狀態(數據) 的改變
        const mutations ={
         //與上方 commit 中的 ‘increment' 相對應
         increment(state){
         state.count ++;
         }
        }
        // 創建 store 對象
        const store = new Vuex.Store({
         state,
         getters,
         actions,
         mutations
        })
        
        // 導出 store 對象
        export default store;
        
        

        ⑤ 在 app.vue 中引入 mapActions ,并調用

        mapActions 用來獲取方法(動作)

        import {mapGetters,mapActions} from 'vuex'

        調用 mapActions 輔助方法,并傳入一個數組,在數組中指定要獲取的方法 increment

        <template>
         <div id="app">
         //這個 increment 方法與下面 methods 中的 increment 相對應
         <button @click="increment">增加</button>
         <button>減少</button>
         <h1>{{count}}</h1>
         </div>
        </template>
        
        <script>
        import {mapGetters,mapActions} from 'vuex'
        export default {
         name: 'app',
         computed:mapGetters([
         'count'
         ]),
         methods:mapActions([
         //該 increment 來自 store.js 中導出的 actions 和 mutations 中的 increment 
         'increment',
         ])
        }
        </script>
        
        

        這樣就能通過 button 來改變獲取到的 count 了。

        看起來確實是挺繞的,需要在理解了原理的情況下,再細細琢磨,加深理解。

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        Vuex 入門教程

        Vuex 入門教程:Vuex 是什么? 官方給出的解釋:Vuex 是一個專為 Vue.js 應用程序開發的狀態管理模式。它采用集中式存儲管理應用的所有組件的狀態,并以相應的規則保證狀態以一種可預測的方式發生變化。 相信很多新選手看完這段話有種絕望的感覺。開始我也是這樣的,后來我想
        推薦度:
        標簽: VUE 入門 入門教程
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 色噜噜AV亚洲色一区二区| 国产国产人免费人成免费视频| 久久久久亚洲?V成人无码| 青娱乐在线视频免费观看| 在线看片无码永久免费aⅴ| 亚洲AV永久无码天堂影院 | 91免费国产视频| 亚洲色欲色欲www在线丝| 国产一级黄片儿免费看| 亚洲爆乳无码一区二区三区| 国产精品区免费视频| 亚洲经典在线中文字幕| 免费人成在线视频| 亚洲av日韩专区在线观看| 亚洲Av无码乱码在线znlu| 一级视频在线免费观看| 国产成人精品日本亚洲| 99re这里有免费视频精品| 亚洲国产视频网站| 免费国产a国产片高清| 水蜜桃视频在线观看免费播放高清| 亚洲色婷婷一区二区三区| 日本视频一区在线观看免费| 亚洲色大成网站www久久九| 亚洲精品456播放| 99免费视频观看| 色噜噜噜噜亚洲第一| 亚洲午夜爱爱香蕉片| 88av免费观看| 午夜亚洲WWW湿好爽| 国产亚洲综合久久系列| 国产精品69白浆在线观看免费| 怡红院亚洲红怡院在线观看| 国产V亚洲V天堂无码| 好吊妞在线成人免费| japanese色国产在线看免费| 亚洲欧洲日韩不卡| 免费永久国产在线视频| 亚洲精品免费观看| 在线观看亚洲视频| 久久久久亚洲精品天堂|