持久化存储

在store里面的user.js(自己创建的)中

export default {
	state: {
		status: false,   //登录的状态,获取数据中status是1,登录成功时状态为1
		token: false,   //一个令牌,看你是不是进入的一个令牌
		userInfo: {}
	},
	mutations: {
          getUserInfo(state,preload){
			  state.status=preload.status
			  state.token = preload.token
			  state.userInfo = preload
			  uni.setStorageSync('userInfo', state.userInfo);  //把state.userInfo存储起来
			  uni.setStorageSync('token', state.token); //把state.token存储起来
		  },
              //储存之后调用
          initUser(state) {   //initUser自己随便起的名字
			let user = uni.getStorageSync('userInfo');
            //获取下面存储中setStorageSync里面的userInfo数据
			state.userInfo = user
			state.token = user.token
			state.status = user.status
		}
	},
	getters: {

	},
	actions: {

	}

}

获取数据后在App.vue中触发他

<script>
	export default {
		onLaunch: function() {
			console.log('App Launch')
			this.$store.commit('initUser')
		},
		onShow: function() {
			console.log('App Show')
			this.$store.commit('initUser')
		},
		onHide: function() {
			console.log('App Hide')
		}
	}
</script>

退出后清除本地缓存

 在api中login.js创建一个请求

import request from '../utils/request.js'
import store from '../store' 
export function logout(){
	console.log(store);
	return request({
		url:`/logout`,
		method:'POST',
		header:{
			token:store.state.user.token //在打印的store中找到token的位置
		}
	})
}

因为接口数据有header头,所有看看request.js请求中是否加入了header

var request = function(options){
	return new Promise((resolve,reject)=>{
		uni.request({
			url:baseURL+options.url,
			method:options.method||'GET',
			data:options.data||{},
			header: options.header || {},
			dataType:options.dataType||'json',
			success: (res) => {
				resolve(res.data)
			},
			fail: (err) => {
				reject(err)
			}
		})
	})
}

在user.js中加入清除缓存后的数据

mutations:{
	  layout(state) {
		  	 state.userInfo = ''
		  	 state.token = ''
		  	 state.status = ''
		       uni.removeStorageSync('userInfo');
		       uni.removeStorageSync('token');
		  }
        }

在登录后我的那个页面中

			<view  @click="layOut"> 退出登录 </view>

引入文件地址

import {logout} from '../../api/login.js'  //填写接口的地址
	methods: {
			...mapMutations(['layout']),
			layOut(){
				logout().then(res=>{
					console.log(res);
					this.layout()
					uni.navigateTo({
						url:'../login/login'
					})
				})
			}
        }

 

Logo

基于 Vue 的企业级 UI 组件库和中后台系统解决方案,为数万开发者服务。

更多推荐