element ui框架(vuex3使用)

Posted 嵌入式-老费

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了element ui框架(vuex3使用)相关的知识,希望对你有一定的参考价值。

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        前面我们使用了sessionStorage实现了登陆状态的保存。但是sessionStorage保存的数据是有限的,如果希望实现vue不同组件之间的数据共享,可以使用vuex来实现。目前和vue2比较match的vuex是vuex3,这一点需要注意下。

1、安装vuex3

npm install vuex@3 --save-dev

2、在main.js中添加vuex

import Vuex from 'vuex'
Vue.use(Vuex)

3、创建一个store目录,准备index.js文件

import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

const state = 
	user:
		name:''
	
;

const getters = 
	getUser(state) 
		return state.user;
	
;

const mutations = 
	updateUser(state,user)
		state.user = user;
	
;

const actions = 
	asyncUpdateUser(context, user)
		context.commit("updateUser", user);
	
;

export default new Vuex.Store(
	state, 
	getters, 
	mutations,
	actions 
)

4、在main.js中加入刚刚创建的store对象

import store from './store'

/* eslint-disable no-new */
new Vue(
  el: '#app',
  router,
  store,
  components:  App ,
  template: '<App/>',
  render:h=>h(App)
)

5、在submitForm中增加代码

this.$store.dispatch("asyncUpdateUser", name:this.form.name);

6、在Main.vue中修改span中的显示方法

<span>$store.getters.getUser.name</span>

7、测试验证

        在没有添加vuex之前,登录到Main页面之后。如果继续点击/MemberLevel,或者是/MemberList,就会出现用户丢失的情况。现在有了vuex,这种现象不会出现了。

8、继续解决页面刷新后,用户信息丢失的问题

        要解决这个问题,需要有两个地方做出修改,一个是在Main.vue中添加页面刷新回调,保证页面刷新前数据保存到sessionStorage;另外一个就是store的index.js做出修改,主要是state的初始化。

8.1 Main.vue添加回调函数

export default 
	name: "Main",
	mounted() 
		window.addEventListener('unload', this.saveState())
	,
	methods: 
		saveState() 
			console.log(JSON.stringify(this.$store.state));
			sessionStorage.setItem('state', JSON.stringify(this.$store.state));
	
  

8.2 修改store/index.js中state的初始化函数

const state = sessionStorage.getItem('state')?JSON.parse(sessionStorage.getItem('state')):
	user:
		name:''
	
;

        有了8.1和8.2这两部分,基本就可以解决页面F5刷新后,用户信息丢失的问题。

9、针对前一篇登录状态保留中的作弊问题,因为有了store数据,这里其实也可以一并修改了,

router.beforeEach((to,from,next)=>
	let isLogin = sessionStorage.getItem('isLogin')
	
	if(to.path=='/Logout')
		sessionStorage.clear()
		next(path:"/Login")
	
	else if(to.path == '/Login') 
		if(isLogin != null) 
			next(path:('/Main/'+store.getters.getUser.name))  // 修改一处
		
	
	else if(to.path == '/') 
		if(isLogin != null) 
			next(path:('/Main/'+store.getters.getUser.name)) // 修改二处
		
		else
			next(path:'/Login')
		
	
	else if(isLogin == null)
		next(path:'/Login')
	
	
	next();
)

以上是关于element ui框架(vuex3使用)的主要内容,如果未能解决你的问题,请参考以下文章

关于element-ui的按需引入配置

Element UI 自定义 sass 变量

更改 element-ui 标题行的背景颜色

在vue中使用element-ui框架

前端新框架 Element UI

Vue SSR 项目 Nuxt.js 框架之《如何引入第三方UI框架element-ui》