zoukankan      html  css  js  c++  java
  • 对vuex进行分模块管理

    之前写的vuex store里放一个state 这样随着项目越来越大,state也会越来越大 。

    而且考虑多人开发多人维护一个state 也会比较难维护 估计多人开发的一定会分模块管理state 在redux里提供了 combineReducers 可以拆分reducer到组件

    翻了下vuex文档 发现提供了modules 估计可以按照这个进行拆分 也不是拆分 实际是提供了命名空间 试验了下

    新建了个shop的模块 

    state.js

    export default {
      vshop:'123'
    }

    getters.js

    export default {
      ashop:state=>state.vshop+'哈哈'
    }

    actions.js

    export default {
      shopAction(ctx,item){
        ctx.commit('shopMutation',item);
      }
    }

    mutations.js

    export default {
      shopMutation(state,item){
        state.vshop=item;
      }
    }

    index.js

    import state from './state'
    import getters from './getters'
    import mutations from './mutations'
    import actions from './actions'
    
    export default {
      namespaced: true,
      state,
      getters,
      mutations,
      actions
    }

    在store/index.js 引入刚才新建的shop模块

    import Vue from 'vue'
    import Vuex from 'vuex'
    import state from './state.js'
    import actions from './actions.js'
    import mutations from './mutations.js'
    import shop from './shop'
    
    Vue.use(Vuex)
    export default new Vuex.Store({
      state,
      actions,
      mutations,
      modules:{
        shop
      }
    })

    在我demo的组件Dataming.vue

    computed:{
        ...mapState('shop',{
          vshop:'vshop'
        })
      }

    在methods

    methods:{
      changeshop(){
          this.shopAction(99099);
        },
        ...mapActions('shop',{
          shopAction:"shopAction"
        }),
        ...mapMutations('shop',{
          shopMutation:'shopMutation'
        })  
    }

    在模板文件里放了个

    <div>
        {{vshop}}<button @click="changeshop">changeshop</button>
    </div>

    这样基本完成了一个小的vuex分模块demo

    补充

    期中getters.js  类似vue计算属性 

    computed:{
        ...mapState('shop',{
          vshop:'vshop'
        }),
        ...mapGetters('shop',{
          ashop:'ashop'
        })
    
      }

    在模板中 {{ashop}}

  • 相关阅读:
    【转】 web前端基础知识-(五)jQuery
    【转】 web前端基础知识-(四)DOM
    【转】 web前端基础知识-(三)JavaScript基本操作
    【转】 web前端基础知识-(二)CSS基本操作
    【转】 web前端基础知识-(一)html基本操作
    Vue的dom更新机制 & Vue的nextTick
    VUE项目中实现PDF预览
    WebView
    Nginx服务器
    前端存储 --- cookie & localStorage & sessionStorage & Web SQL & IndexDB & Cache Storage
  • 原文地址:https://www.cnblogs.com/junwu/p/11201669.html
Copyright © 2011-2022 走看看