vuex实战

1. 页面获取全局配置文件数据
登录页面底部展示放置在全局配置文件的相关数据,如软件版权信息等
src/config/index.js与首页相关配置信息如下:

/**
* 是否显示设置的底部信息
*/
showFooter: true,

/**
* 底部文字,支持html语法
*/
footerTxt: '© 2020 Zhou Yi <a href="https://www.jianshu.com/u/4fc65de1790b" target="_blank">个人博客</a>',

/**
* 备案号
*/
caseNumber: '渝ICP备18005431号'

src/store/index.js ,vuex存储

import Vue from 'vue'
import Vuex from 'vuex' //这个才是做数据存储的
import user from './modules/user'
import setting from './modules/setting'

Vue.use(Vuex)
//存储用户模块和设置模块
const store = new Vuex.Store({
  modules: {
    user,
    setting
  },
})

export default store

src/store/modules/setting.js,设置模块

import Config from '@/config'

const settings = {
  state: {
    showRightPanel: false,
    tagsView: Config.tagsView,
    fixedHeader: Config.fixedHeader,
    sidebarLogo: Config.sidebarLogo,
    settingBtn: Config.settingBtn,
    uniqueOpened: Config.uniqueOpened,
    showFooter: Config.showFooter,
    footerTxt: Config.footerTxt,
    caseNumber: Config.caseNumber
  },
  mutations: {
    CHANGE_SETTING: (state, { key, value }) => {
      if (state.hasOwnProperty(key)) {
        state[key] = value
      }
    }
  },
  actions: {
    changeSetting({ commit }, data) {
      commit('CHANGE_SETTING', data)
    }
  }
}
export default settings

入口main.js中引入store

import store from './store'

new Vue({
  el: '#app',
  router,
  store,
  render: h => h(App)
})

src/views/login.vue,登录页终于可以调用配置数据了

<template>
 <!--  底部  -->
    <div v-if="$store.state.setting.showFooter" id="el-login-footer">
      <span v-html="$store.state.setting.footerTxt"/>
      <span> ⋅ </span>
      <a href="http://www.beian.miit.gov.cn" target="_blank">{{$store.state.setting.caseNumber}}</a>
    </div>
  </div>
</template>
  1. 请求异步操作结束处理
    vuex中的dispatch和commit的使用:

dispatch 异步操作 this.$store.dispatch('actions的方法',arg)

commit 同步操作 this.$store.commit('mutations的方法',arg)

​ Vuex结合 Promise 处理异步请求结束

  ```js

updateLoadMenus({ commit }) {
return new Promise((resolve, reject) => {
commit('SET_LOAD_MENUS', false)
})
}
```

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容