zoukankan      html  css  js  c++  java
  • vuex 封装

    main.js

    import Vue from 'vue'
    import App from './App'
    import router from './router'
    import store from './store/index'
    import ElementUI from 'element-ui'
    import 'element-ui/lib/theme-chalk/index.css'
    Vue.use(ElementUI)
    Vue.config.productionTip = false
    
    new Vue({
      store,
      el: '#app',
      router,
      components: { App },
      template: '<App/>'
    })

    store文件中的index.js

    import { MUTATION_ADD_AGE } from './mutation_type'  //01导入
    export { MUTATION_ADD_AGE }  //02导出
    
    import Vue from 'vue'
    import Vuex from 'vuex'  // 01引入vuex组件
    Vue.use(Vuex)            // 02 使用组件
    
    export default new Vuex.Store({
          state:{
            name:'zzh',
            firstname:'周',
            lastname:'浩',
            age:18,
            sex:'man',
            money:99999999999999999999999999999
          },
          getters:{
            /* 
            money_use(state){
               return (state.money/6).toFixed(2)
            },
            allname(state){
               return state.firstname + state.lastname
            }
            */
           money_use: (state) => (state.money/6).toFixed(2),
             allname: (state)=> state.firstname + state.lastname
         
          },
          mutations:{
            [ MUTATION_ADD_AGE ](state,payLoad){ // payLoad: 接收调用传来的参数{num:10}
              state.age += payLoad.num
            },
            setUserInfo(state,info){  // 通过actions中的getUserInfo方法异步请求回用户的信息,在mutation中给state赋值
              state.name  = info.name
              state.firstname = info.firstname
              state.lastname  = info.lastname
              state.age = info.age
              state.sex = info.sex
              state.money = info.money
            },
            setToekn(state,info){
    
            }
          },
    
          actions:{
            
            //  async getToken ({ commit }){ //解构 {commit}相当于 context.commit
            //                  var res = await axios.get('./user/getToken.....')
            //                  commit('setToekn',res)
            //                 },
    
            //  async getUserInfo(context){    //context代表整个store
            //             /*this.$store.commit() = context.commit()
            //             在action里通过操作mutations来改变state里的值。res是axios请求回来的用户数据*/
            //               var token = await context.dispatch('getToken')
            //               var res = await axios.get('./user/geruserinfo.....')
            //               context.commit('setUserInfo',res) 
                          
            // }
            
                     async getUserInfo(context){        
                          context.commit('setUserInfo',{
                            name : '周中浩',
                            firstname : '周',
                            lastname  : '中浩',
                            age : 18,
                            sex : '男',
                            money: 888888888888888888888888
                          })          
            }
          }
    })

    mutation_type.js

    export const  MUTATION_ADD_AGE = 'addAge'

    组件调用vuex中的方法属性

    <template>
          <div>
                {{name+'-'+age+'-'+sex}}----{{money_use}}--{{allname}}
                 <el-button type="primary" @click='addAge({num:10})'>add</el-button>
          </div>
    </template>
    
    <script>
    import { MUTATION_ADD_AGE } from '@/store'
    import { mapState,mapGetters,mapMutations,mapActions } from 'vuex'
    export default {
          computed:{
                ...mapState(['name','age','sex']),
                ...mapGetters(['money_use','allname'])
          },
          created(){
               this.getUserInfo()
          },
          methods:{
                // addAge(){
                //       this.$store.commit('addAge',{num:10})
                // },
                ...mapMutations([MUTATION_ADD_AGE]), // this.$store.commit()
                ...mapActions(['getUserInfo'])   // this.$store.dispatch()
          }
    }
    </script>
    
    <style>
    
    </style>
    <template>
          <h1>
                {{gender}}--{{age}}
          </h1>
    </template>
    
    <script>
    export default {
          computed:{
                gender(){
                      return this.$store.state.name
                },
                age(){
                      return this.$store.state.age
                }
          }
    }
    </script>
    
    <style>
    
    </style>
  • 相关阅读:
    不同的二叉搜索树
    二叉树展开为链表
    二叉树的中序遍历
    二叉树的直径
    树系列之对称二叉树
    从前序与中序遍历序列构造二叉树
    字符串反转
    旋转图像---二维矩阵
    双指针---最接近的三数之和
    Egret 小游戏实战教程 跳一跳(搬运二)
  • 原文地址:https://www.cnblogs.com/javascript9527/p/12491325.html
Copyright © 2011-2022 走看看