Vue2+VueRouter3+Webpack3.6+Axios项目实战----vuex整合进项目(三)

本文详细介绍了如何在Vue项目中配置Vuex状态管理工具,包括修改入口文件、创建状态管理文件等内容,并展示了登录模块的具体实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前面三节以及将项目搭建以及idea环境搭建进行了讲解,接下来进入编程实战了。
既然是正规项目自然少不了vuex咯,接下来我们来配置vuex。

vuex主要是用于状态管理,具体的技术细节可以查看 vue的官网 ,我们不对vuex的使用进行阐述,只是将整合过程讲解下。

第一步:对入口主文件进行一个修改,也就是main.js文件

这里写图片描述

添加如下内容到该文件中:

import Vuex from 'vuex'
//导入vuex状态管理文件
import initStore from "./store"
Vue.use(Vuex);

//初始化vuex
let store = new Vuex.Store(initStore);

//动态添加相应的store模块 主要是用于界面跳转是 出现loading提醒图标
store.registerModule('vux', {
  state: {
    isLoading: false,
  },
  mutations: {
    updateLoadingStatus (state, payload) {
      state.isLoading = payload.isLoading
    },
  },
})

 //初始化入口vue对象
new Vue({
  el: '#app',
  router,
  //将状态管理 放入到vue中
  store,
  components: { App },
  template: '<App/>'
})

第二步:则就是新建状态管理文件,我的目录结构大概如下:
这里写图片描述

index.js是总状态,而system下的loginStore.js则为登录模块的状态管理文件,因为项目比较大,这里采用了分模块管理的方式,不然状态过多容易造成混乱。
index.js文件内容:

import LoginStore from "./system/LoginStore";


/** 基础store **/
let initStore = {
  state: {

  },
  actions: {},
  mutations: {

  },
  modules: {
    loginStore: LoginStore,
  }
}
export default  initStore;

而LoginStore.js的文件内容:

import LoginDomain from '../../domain/LoginDomain';
import goI18nLabel from 'i18n_zh_CN';
import GoingUtils from 'GoingUtils';

const CHANGE_LOGIN_MODEL = 'CHANGE_LOGIN_MODEL';//用户登陆操作
const SUBMIT_SUCCESS = 'SUBMIT_SUCCESS'; //登陆成功
const SUBMIT_ERROR = 'SUBMIT_ERROR'; //登陆错误
const LOAD_LOGIN_CONFIG = 'LOAD_LOGIN_CONFIG'; //加载登陆界面的配置信息


/** i18n **/
let LoginStore = {
  state: {
    //使用vue 来做国际化显示的映射。
    pageLabel: {
      loginBtnLabel: goI18nLabel("登录"),//登录按钮的label
      findPswLabel: goI18nLabel("找回密码"),//找回密码的label
      i18nSelLabel: goI18nLabel("中文(简体)"),//选则语言的label
      mobileLabel: goI18nLabel("微信扫描登录"),
      wxScanLabel: goI18nLabel("下载移动客户端"),
    },
    pageImages: {
      mobileScanImg: './img/m3-qrcode.png',
      wxScanImg: './img/mi-qrcode.png',
      dropDownImg: "../../svg/down4.svg",
    },
    showForm: true,//控制是否显示登录框
    loginInfo: {
      userId: "",
      password: ""
    },
    count: 0,
    domainData: GoingUtils.getJsonDomain(LoginDomain),
    errorInfo: "",//登陆相关的错误信息
    jumpFlag: false,//跳转到系统首页,
    superAdminJumpFlag: false,//超级管理员跳转标志
    adminJumpFlag: false,//单位管理员跳转标志
    systemAdminJumpFlag: false,//系统管理员跳转标志
    sysSessionId: '',
    recoverPwdFlag: false,
  },
  actions: {},
  mutations: {},
}


export default LoginStore;

这时候就完成了登录模块的store配置,并且将vuex整合进项目,今后只要添加相应的模块store即可。

第三步:则是模块状态的访问
访问loginStore下的状态的写法:

例如:

    ...mapState({
        recoverPwdFlag: state => state.loginStore.recoverPwdFlag,
        domainData: state => state.loginStore.domainData,
        showForm: state => state.loginStore.showForm,
        loginTempId: state => state.loginStore.loginTempId,
      }),
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值