十四、Vuex的使用

  1. Vuex是什么?

    Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。Vuex 也集成到 Vue 的官方调试工具 devtools extension,提供了诸如零配置的 time-travel 调试、状态快照导入导出等高级调试功能。简单点理解,就是凡是将数据用状态管理模式来存储,在用到该数据的地方,只要一处地方发生变化,另一处也会发生变化,这样就解决了vue中非父子组件传值的问题,当然了,Vuex的作用不止如此,还有许多新的功能,诸如配合路由守卫做登陆拦截,配合localStorage进行本地数据的存储与管理等等。

  2. Vuex的安装

    //npm的安装方式
    npm install vuex --save
  3. Vuex的简单实用

    1. 利用Vuex和localStorage进行用户状态管理,防止刷新浏览器后用户状态丢失,实现如下:

       //发送请求
      this.axios
      .post(
      "url",
      JSON.stringify(this.userInfo)
      )
      .then(res => {
      console.log(res.data);
      if (res.status == 200 && res.data.verify == true) {
      const userName = res.data.uphone;
      const token = res.data.token;
      this.$router.push({ path: "/" });
      //将token通过commit提交到Vuex
      this.$store.commit("getToken", token);
      // 将登录名使用vuex传递到Home页面
      this.$store.commit("userName", userName);
      } else {
      this.$notify({
      title: "提示信息",
      message: "账号或密码错误",
      type: "error"
      });
      }
      })
      .catch(err => {
      console.log(err);
      });
    2. 通过Vuex和localStorage存储用户信息以保持用户状态

      import Vue from 'vue'
      
      import Vuex from 'vuex'
      
      Vue.use(Vuex)
      
      const mutations = {
      
         userName: (state, user_name) => {
      
             state.user_name = user_name
      
           // 把登录的用户的名保存到localStorage中,防止页面刷新,导致vuex重新启动,用户名就成为初始值的情况
      
              localStorage.setItem('user_name', user_name)
      
          },
      
          getToken(state, token) {
      
              state.token = token;
      
              localStorage.setItem('token', token)
      
          },
      
      }
      
      const state = {
      
          user_name: localStorage.getItem('user_name'),
      
          token: localStorage.getItem('token'),
      
      }
      
      // getters 只会依赖 state 中的成员去更新
      
      const getters = {
      
         userPhone: (state) => state.user_name,
      
          token: (state) => state.token,
      
      }
      
      const store = new Vuex.Store({
      
          actions,
      
          mutations,
      
          state,
      
          getters
      
      })
      
      export default store
    3. 至此,该功能已实现

十五、侧边导航栏的实现

  1. 有时候,我们在项目中有这样的需求,页面左侧是菜单栏,右边是每个菜单项所对应的内容区,点击不同的菜单项,内容区会显示不同的内容,这个怎样实现呢?我采取了子路由渲染的方法,如下:

    1. 假设我们有四个菜单项模块,那么它的路由配置是这样的:

      {
      path: '/inform',
      name: inform,
      component: (resolve) => require(['../components/presonal/inform.vue'], resolve),
      meta: {
      isLogin: true
      },
      children: [{
      path: '/inform/course',
      name: course,
      component: (resolve) => require(['../components/presonal/slider/course.vue'], resolve)
      }, {
      path: '/inform/interactive',
      name: interactive,
      component: (resolve) => require(['../components/presonal/slider/interactive.vue'], resolve)
      },
      {
      path: '/inform/system',
      name: system,
      component: (resolve) => require(['../components/presonal/slider/system.vue'], resolve)
      },
      {
      path: '/inform/privateLetter',
      name: privateLetter,
      component: (resolve) => require(['../components/presonal/slider/privateLetter.vue'], resolve)
      }
      ]
      },
    2. 然后我们在它的父级路由所对应的页面加上<router-view></router-view>即可实现该功能

  2. 至此,该功能已实现

最新文章

  1. [deviceone开发]-仿微信应用(一):框架搭建
  2. 限制EditText只能输入小数点后两位
  3. WordPress 添加面包屑导航
  4. 来自亚马逊CEO Jeff Bezos的20句经验之谈
  5. 谷歌地图实现车辆轨迹移动播放(google map api)
  6. JavaScript 对象属性的遍历
  7. tty/pts 相关指令
  8. 8、Cocos2dx 3.0三,找一个小游戏开发3.0存储器管理的版本号
  9. 关于有限状态机FSM同步复位的问题
  10. BZOJ.4137.[FJOI2015]火星商店问题(线段树分治 可持久化Trie)
  11. SparkStreaming+Kafka整合
  12. EXCEL查找函数之VLOOKUP,LOOKUP,HLOOKUP
  13. 【redis 学习系列】API的理解与使用(一)
  14. python2x 和 python 3x的区别
  15. pgm15
  16. 【转】oracle定制定时执行任务
  17. ICCV 2017论文分析(文本分析)标题词频分析 这算不算大数据 第一步:数据清洗(删除作者和无用的页码)
  18. 钻牛角尖还是走进死胡同--shell脚本根据名称获得 dubbo 服务的 pid
  19. Haskell语言学习笔记(33)Exception, Except, ExceptT
  20. source Insight工程的简单使用

热门文章

  1. Eclipse Spring框架配置
  2. JAVA项目从运维部署到项目开发(五. Nginx)
  3. git commit规范化实践
  4. 小白学python-day04-运算符、while循环相关
  5. linux初学者-ftp篇(一)
  6. java练习---14
  7. 跟着阿里p7一起学java高并发 - 第19天:JUC中的Executor框架详解1,全面掌握java并发核心技术
  8. re模块学习
  9. 大数阶乘(c++实现)
  10. 挂起(suspend)与线程阻塞工具类LockSupport