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

    一.vuex状态管理

    1.先创建一个vuex的js文件

    2.接着在组件中使用store,获得/改变store中的数据和方法

    3.在另一个组件中使用store,也可以获得/改变store中的数据和方法

    4.也可以把里面的内容都单独封装,写成独立的js文件

      action.js/getters.js/index.js/mutations.js...

    二.vuex状态管理封装(user.js和subclass.js为例子)

    1.创建一个user.js 和 一个subclass.js  接口异步获取通过actions,否则就是在getters方法中获取

    user.js

    import { getInfo } from '@/api/login';
    
    
    const user = {
      state: {
        userInfo: {}
      },
    
      mutations: {
        SET_USER_INFO: (state, userInfo) => {
          state.userInfo = userInfo;
        }
      },
    
      actions: {
        // get user info
        getInfo({ commit, state }) {
          return new Promise((resolve, reject) => {
            getInfo(state.token)
              .then(res => {
                const data = res.data;
                commit('SET_USER_INFO', data);
                resolve(data);
              })
              .catch(error => {
                reject(error);
              });
          });
        }
      }
    };
    
    export default user;

    subclass.js

    const subclass = {
      state: {
        //这里放全局参数
        currentSubclassId: ''
      },
    
      mutations: {
        SET_SUBCLASS_ID: (state, currentSubclassId) => {
          state.currentSubclassId = currentSubclassId;
        }
      },
      // 异步获取数据通过actions,通过dispatch 触发actions中的数据
      //actions: {
        //commitSubclassId: ({ commit }, basicData) =>
          //commit('SET_SUBCLASS_ID', basicData)
      //},
    
      modules: {
        //给全局变量分组,所以需要写提前声明其他store文件,然后引入这里
      }
    };
    
    export default subclass;

    2.创建一个getters.js

    const getters = {
      userInfo: state => state.user.userInfo,
      saveSubclassId: state => state.subclass.currentSubclassId
    };
    export default getters;

    3.store下创建一个index.js

    import Vue from 'vue';
    import Vuex from 'vuex';
    import getters from './getters';
    
    import user from './modules/user';
    import subclass from './modules/subclass';
    
    Vue.use(Vuex);
    
    const store = new Vuex.Store({
      modules: {
        user,
        subclass
      },
      getters
    });
    
    export default store;

    4.使用 通过...mapGetters(['']) 获取数据  

    使用

    6.改变vuex中的数据通过this.$store.commit('SET_SUBCLASS_ID', data)

      触发action中的方法使用this.$store.dispatch('', data);

  • 相关阅读:
    ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes
    大div套多个小div,怎样设置外div的高度自适应?
    搭建高可用rabbitmq集群及spring boot实现集群配置
    linux signal 处理
    freemarker null异常详解及兼容模式
    蓝绿部署、A/B测试以及灰度发布(金丝雀发布)
    动态BGP与静态BGP
    axios与ajax的区别及中文用户指南
    java poi excel给单元格增加批注(包含SXSSF)及设置列类型
    java图片处理(加水印、生成缩略图)等之Thumbnailator库
  • 原文地址:https://www.cnblogs.com/zhangning187/p/fendouzailushang2.html
Copyright © 2011-2022 走看看