vuex+localSrorage+vue-router写一个简易的注册登录页面

先看一下效果吧

 

用的是localStorage来保存的username。

在这里说一下关键的代码吧,因为使用的是模块化组件式开发,所以如果贴代码的实在是太多了。

大致的思路就是:注册的时候,通过localStorage将username保存到本地存储,在登录的时候获取登录表单的值,并与本地存储的username检测是否相等,相等的话即登陆成功,不相等的话显示用户名没有注册。

首先你要对localStorage最基本的创建和读取有一定的了解,localStorage的创建有三种方式

localStorage.setItem('a',1)
localStorage.a = 1 
localStorage['a'] = 1

相应的,localStorage读取也有三种方式

console.log(localStorage.a)
console.log(localStorage['a'])
console.log(localStorage.getItem('a'))

写一下主页

    //home组件的路由  
  <router-link to="home">Home</router-link>
	
    //登录和注册组件的路由,在vuex中设置了一个判断用户登录状态的flag,初始化为false

	<template v-if="!this.$store.state.flag">
		<router-link to="register">Register</router-link>
		<router-link to="login">Login</router-link>
	</template>
	<template v-else>
		<div>
			<h2>欢迎你
                    <span style="text-decoration: underline; color: red;">
                        {{this.$store.state.username}}
                    </span>
            </h2>
		</div>
	</template>
		
	//路由渲染区域
    <router-view></router-view>

页面没有什么可以说的,简简单单三个路由就好。

 

然后是注册

<template>
	<div class="register">
		<input type="text" v-model.trim="username" @keyup.enter="register" placeholder="请输入你的昵称">
		<button @click="register">注册</button>
	</div> 
</template>

<script>
    data () {
			return {
				username:''
			}
		},
		methods: {
			register () {
				this.$store.commit('getUserInfo',{
					name:this.username
				})
				alert('注册成功, 去登录吧!')
			} 	
		}
</script>

注册按钮点击后就通过vuex的mutation来改变初始值并保存。

vuex.store

const store = new Vuex.Store({
	state:{
		username:''|| localStorage.username,
		flag:false,
	},
	getters:{
		
	},
	
	mutations:{
		getUserInfo(state,user){
			state.username =user.name
			localStorage.setItem('username',state.username)
		},
		hiddenMenu(state){
			state.flag = true
		}
	}
})
export default store

关键的部分就是对获取到的username进行localStorage进行本地存储,mutations里面可以传两个参数,第一个是包含状态的state,第二个是修改状态的值,一般来说是一个对象,更方便的去管理,更易读。

登录

methods:{
			login () {
				if(window.localStorage){
					var storage = window.localStorage 
					
					if(this.user == storage.getItem('username')){
						alert('登陆成功!')
						this.$store.commit('hiddenMenu')
						this.$router.push({
							path:'home'
						})
					}else{
					alert('用户名未注册,请先去注册')
					}
				}
			},
			toReg(){
				this.$router.push({
					path:'register'
				})
			}
		}

判断如果相等就成功。关键就是这些代码啦!如果有不对的地方,还请大佬们多多指点批评!

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值