<strike id="cy2gs"><menu id="cy2gs"></menu></strike>
  • <del id="cy2gs"><dfn id="cy2gs"></dfn></del>
  • 關于Vuex的全家桶狀態管理(二)

    2018-5-28    seo達人

    如果您想訂閱本博客內容,每天自動發到您的郵箱中, 請點這里

    1:mutations觸發狀態 (同步狀態)

    <template> <p class="hello"> <h1>Hello Vuex</h1> <h5>{{count}}</h5> <p> <button @click="jia">+</button> <button @click="jian">-</button> </p> </p> </template> <script> import {mapState,mapMutations} from 'vuex' export default{
      name:'hello', //寫上name的作用是,如果你頁面報錯了,他會提示你是那個頁面報的錯,很實用 //方法三 computed: mapState([ 'count' ]),
      methods:{
       ...mapMutations([ 'jia', 'jian' ])
      }
     } </script>
        
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    2:getters計算屬性

    getter不能使用箭頭函數,會改變this的指向

    在store.js添加getters

     // 計算 const getters = {
      count(state){ return state.count + 66 }
    } export default new Vuex.Store({
      state,
      mutations,
      getters
    })
        
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    //count的參數就是上面定義的state對象 
    //getters中定義的方法名稱和組件中使用的時候一定是一致的,定義的是count方法,使用的時候也用count,保持一致。 
    組件中使用

    <script> import {mapState,mapMutations,mapGetters} from 'vuex' export default{
      name:'hello',
      computed: {
       ...mapState([ 'count' ]),
       ...mapGetters([ 'count' ])
      },
      methods:{
       ...mapMutations([ 'jia', 'jian' ])
      }
     } </script>
        
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    3:actions (異步狀態)

    在store.js添加actions

    import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex) // 定義常量 const state = { count: 1 } // mutations用來改變store狀態 同步狀態 const mutations = {
      jia(state){
        state.count ++
      },
      jian(state){
        state.count --
      },
    } // 計算屬性 const getters = {
      count(state){ return state.count + 66 }
    } // 異步狀態 const actions = {
      jiaplus(context){
        context.commit('jia') //調用mutations下面的方法
        setTimeout(()=>{
          context.commit('jian')
        },2000) alert('我先被執行了,然后兩秒后調用jian的方法') }, jianplus(context){ context.commit('jian') }
    } export default new Vuex.Store({
      state,
      mutations,
      getters,
      actions
    })
        
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44

    在組件中使用

    <template> <p class="hello"> <h1>Hello Vuex</h1> <h5>{{count}}</h5> <p> <button @click="jia">+</button> <button @click="jian">-</button> </p> <p> <button @click="jiaplus">+plus</button> <button @click="jianplus">-plus</button> </p> </p> </template> <script> import {mapState,mapMutations,mapGetters,mapActions} from 'vuex' export default{
      name:'hello',
      computed: {
       ...mapState([ 'count' ]),
       ...mapGetters([ 'count' ])
      },
      methods:{ // 這里是數組的方式觸發方法 ...mapMutations([ 'jia', 'jian' ]), // 換一中方式觸發方法 用對象的方式 ...mapActions({
        jiaplus: 'jiaplus',
        jianplus: 'jianplus' })
      }
     } </script> <style scoped> h5{ font-size: 20px; color: red; } </style>
        
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48

    4:modules 模塊

    適用于非常大的項目,且狀態很多的情況下使用,便于管理

    修改store.js

    import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex) const state = { count: 1 } const mutations = {
      jia(state){
        state.count ++
      },
      jian(state){
        state.count --
      },
    } const getters = {
      count(state){ return state.count + 66 }
    } const actions = {
      jiaplus(context){
        context.commit('jia') //調用mutations下面的方法
        setTimeout(()=>{
          context.commit('jian')
        },2000) alert('我先被執行了,然后兩秒后調用jian的方法') }, jianplus(context){ context.commit('jian') }
    }
    
    //module使用模塊組的方式 moduleA const moduleA = { state, mutations, getters, actions }
    
    // 模塊B moduleB const moduleB = { state: { count:108
      }
    } export default new Vuex.Store({
      modules: {
        a: moduleA,
        b: moduleB,
      }
    })
    藍藍設計www.skdbbs.com )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 平面設計服務

    日歷

    鏈接

    個人資料

    藍藍設計的小編 http://www.skdbbs.com

    存檔

    主站蜘蛛池模板: 久久996热精品xxxx| 久久国产精品久久国产精品| 国产精品视频网站| 国产福利电影一区二区三区,欧美国产成人精品一 | 亚洲а∨天堂久久精品| 亚洲精品国产av成拍色拍| 亚洲AV无码成人精品区在线观看| 国产99视频精品免视看7 | 日韩精品电影一区亚洲| 日韩精品欧美亚洲| 精品少妇人妻av无码久久| 国产精品亚洲精品日韩已满| 亚洲精品成人区在线观看| 亚洲AV无码久久精品狠狠爱浪潮| 丝袜美腿国产精品视频一区| 成人国产一区二区三区精品| 秋霞午夜鲁丝片午夜精品久| 精品国精品国产自在久国产应用男 | 国产精品乱码高清在线观看| 精品一卡2卡三卡4卡免费视频| 国产成人精品高清不卡在线| 18国产精品白浆在线观看免费| 亚洲动漫精品无码av天堂| 国产精品亚洲成在人线| 国产精品部在线观看| 国产麻豆一精品一AV一免费| 在线人成精品免费视频| 香蕉国产精品麻豆亚洲欧美日韩精品自拍欧美v国 | 2020久久精品国产免费| 欧美精品人爱c欧美精品| 国内精品免费久久影院| 97热久久免费频精品99| 天天视频国产精品| 国产精品污WWW一区二区三区| 国产精品亚洲美女久久久| 亚洲无码精品浪潮| 久久九九有精品国产23百花影院| 亚洲精品国产高清嫩草影院| 日韩精品一区二区三区大桥未久 | 国产精品青草久久久久婷婷 | 99久久精品国产毛片|