(一)axios 封装

(1)axios拦截器

可以在axios中加入加载的代码。。。

(2)封装请求

后期每个请求接口都可以写在这个里面。。。

(二)vuex

user.js

import { login } from '@/api/login'const state = {userInfo: null,
}const getters = {get_userInfo (state) {let userInfo = state.userInfoif (!userInfo) {userInfo = window.localStorage.getItem('userInfo')}return JSON.parse(userInfo)}
}const mutations = {set_userInfo (state, data) {state.userInfo = datawindow.localStorage.setItem('userInfo', state.userInfo)}
}const actions = {Login (context, {username, password}) {return new Promise((resolve, reject) => {login(username, password).then(response => {context.commit('set_userInfo', response.data.rtnInfo)resolve(response)}, error => {reject(error)})})}
}export default {state,getters,mutations,actions
}

(1)创建一个state - userInfo  保存用户信息

(2)getters - get_userInfo 获取用户信息,读取缓存

(3)mutations - set_userInfo  每次登录,将用户信息保存在缓存中

(4)action - Login 调用api中的login接口

进行登录操作

在index.js 中注入 user

在main.js中 引入store - index.js

(三)组件中运用

Login.Vue

<template><div id="login"><img class="login-icon01" src="../../static/images/login02.png"><el-form class="login-form" :model="ruleForm" ref="ruleForm"><el-form-item><el-input type="text" placeholder="用户名" v-model="ruleForm.username" prefix-icon="iconfont icon-user" clearable auto-complete="off"></el-input></el-form-item><el-form-item><el-input type="password" placeholder="密码" v-model="ruleForm.password" prefix-icon="iconfont icon-password" clearable auto-complete="off"></el-input></el-form-item><el-form-item><el-button class="login-btn" type="primary" :loading="loading" @click="submitForm(ruleForm)">登录</el-button></el-form-item></el-form><img class="login-icon03" src="../../static/images/login01.png"></div>
</template><script>
export default {data () {return {loading: false,// urlIbest: this.$store.state.User.urlIbest,
      ruleForm: {username: '',password: ''}}},methods: {submitForm (formName) {this.loading = trueif (formName.username === '' || formName.password === '') {this.$message.error('用户名或密码不能为空')this.loading = false} else {// 登录this.$store.dispatch('Login', {'username': formName.username, 'password': formName.password}).then(response => {if (response.data && response.data.rtnCode === '00000000') {this.loading = falsethis.$router.push('/home')} else {this.$message.error(response.data.rtnMsg)this.loading = false}})}}}
}
</script><style lang="less" scoped>#login {background-color: #2f329f;position: fixed;top:0;left:0;right:0;bottom:0;margin:auto;.login-form{width: 80%;padding: 30px 10%;background: rgba(47,50,159,.3);position: absolute;z-index: 8;top: 120px;.el-input__inner{padding-top:8px;padding-bottom:8px;background-color:transparent!important;color:#fff;}.login-btn{width:100%;background-color:#fff;color:#2f329f;border:none;margin-top:20px;}}.login-icon01{position: absolute;width: 20%;right: 15%;top: 60px;z-index: 10;}.login-icon02{position: absolute;width: 50%;bottom:20px;left:0;right:0;margin:auto;z-index:2;}.login-icon03{position: absolute;width: 110%;left: 0;right: 0;bottom: 0;margin-left: -5%;z-index: 1;}}
</style>

在登录提交中,调用store中方法

this.$store.dispatch('Login', {'username': formName.username, 'password': formName.password})

传入用户名和密码

转载于:https://www.cnblogs.com/yulingjia/p/8986387.html

Vue(二十三)vuex + axios + 缓存 运用 (以登陆功能为例)相关推荐

  1. Vue二次封装axios为插件使用

    照例先贴上 axios 的 gitHub 地址 不管用什么方式获取数据,对于一个项目来说,代码一定要利于维护其次是一定要写的优美,因此加上一层封装是必要的 vuejs2.0 已经不再维护 vue-re ...

  2. vue中使用vuex结合sessionStorage做的登录功能

    先说一波vuex的好处 vuex可以保存数组.对象.或者嵌套结构,不用toString 双向绑定,使用commit修改一处状态后,所有引用的地方自动更新,不需要重新取值 可以自定义数据过滤方法.取值方 ...

  3. SpringBoot和Vue集成Markdown和多级评论——基于SpringBoot和Vue的后台管理系统项目系列博客(二十三)

    系列文章目录 系统功能演示--基于SpringBoot和Vue的后台管理系统项目系列博客(一) Vue2安装并集成ElementUI--基于SpringBoot和Vue的后台管理系统项目系列博客(二) ...

  4. Vue 爬坑之路(六)—— 使用 Vuex + axios 发送请求

    Vue 原本有一个官方推荐的 ajax 插件 vue-resource,但是自从 Vue 更新到 2.0 之后,官方就不再更新 vue-resource 目前主流的 Vue 项目,都选择 axios ...

  5. Vue+Vuex+Axios+ECharts 画一个动态更新的中国地图

    一.生成项目及安装插件 # 安装 Vue Cli npm install vue-cli -g# 初始化项目 vue init webpack vue-china-map# 切到目录下 cd vue- ...

  6. vue+vuex+axios从后台获取数据存入vuex,组件之间共享数据

    vue+vuex+axios从后台获取数据存入vuex,组件之间共享数据 在vue项目中组件间相互传值或者后台获取的数据需要供多个组件使用的情况很多的话,有必要考虑引入vuex来管理这些凌乱的状态,今 ...

  7. vue全家桶项目搭建(vue-cli 2.9.6+vue-router+vuex+axios)

    一.安装vue-cli + vue-router + vuex + axios 1.安装vue-cli 2.创建项目 3.安装vuex和axios 二.搭建项目目录结构,如下所示: 1.assets目 ...

  8. vue根据url获取内容axios_vue+vuex+axios从后台获取数据存入vuex,组件之间共享数据...

    在vue项目中组件间相互传值或者后台获取的数据需要供多个组件使用的情况很多的话,有必要考虑引入vuex来管理这些凌乱的状态,今天这边博文用来记录这一整个的过程,后台api接口是使用webpack-se ...

  9. Vue学习笔记(二)—— vue项目中使用axios

    一.文档链接 axios文档 vue开发插件 二.axios 简介 axios 是一个基于Promise 用于浏览器和 nodejs 的 HTTP 客户端,它本身具有以下特征: 从浏览器中创建 XML ...

最新文章

  1. Swift 中使用 SQLite——修改和删除数据
  2. 二维“玄”如何“抖动”出三维世界?
  3. 劳动节特别活动,钉钉、支付宝合种,2-4天领证,限量9个名额
  4. matlab绘制离散数据图
  5. 围棋人机大战明日上演,这份观赛指南请留好
  6. BeanUtils.copyProperties() 用法
  7. iservice封装有哪些方法_总结WebService的一些封装技巧
  8. Freemarker简单封装
  9. 广联达登录显示服务器异常去回答,广联达设置服务器异常5
  10. 11/27 记事本
  11. 机器学习LDA——实验报告
  12. ASP.NET MVC:UrlHelper.cs
  13. esxi查看许可过期_ESXi许可证将在 60 天后过期问题
  14. Carpet-mod常用的用法记录
  15. 高数 不定积分 欧拉代换
  16. 三分钟快速解决vs2015连接数据库显示该文件正在使用/该sql文件被占用等问题
  17. 方法finalize()的应用
  18. SWUST OJ(954)
  19. Spark的容错机制
  20. 常用电平标准——LVTTL、LVCMOS、LVDS

热门文章

  1. dbc文件c语言解析标准,DBC文件解析CAN信息
  2. malloc,free 与new delete的区别
  3. bzoj 3382: [Usaco2004 Open]Cave Cows 3 洞穴里的牛之三(切比雪夫距离)
  4. bzoj 4975: 区间翻转(博弈)
  5. 吴恩达神经网络和深度学习-学习笔记-39-计算机视觉现状
  6. 2020 各大厂分享ppt
  7. matlab2c使用c++实现matlab函数系列教程-perms函数
  8. linux集群中mpi的并行计算环境简单配置,linux集群中MPI的并行计算环境简单配置(转)...
  9. HDU6268 Master of Subgraph
  10. Markdown示例