vuex保持登录

store-->index.js

//引入vue和vuex
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)

const store = new Vuex.Store({ //全局变量定义
	state: {
		forcedLogin: false, //是否需要强制登录
		hasLogin: false,
		userInfo: {}
	},
	mutations: {
		login(state, user) {
			state.hasLogin = true;
			state.userInfo.token = user.token;
			uni.setStorage({
				key: 'userInfo',
				data: user
			});
		},
		logout(state) {
			state.hasLogin = false;
			state.userInfo = {};
			uni.removeStorage({
				key: 'userInfo'
			});
		}
	}
})
export default store

main.js

import App from './App'

// #ifndef VUE3
import Vue from 'vue'
Vue.config.productionTip = false
App.mpType = 'app'

import store from './store' //引入
Vue.prototype.$store = store //挂载在Vue实例上

const app = new Vue({
	...App,
	store //store 对象
})
app.$mount()
// #endif

// #ifdef VUE3
import {
	createSSRApp
} from 'vue'
export function createApp() {
	const app = createSSRApp(App)
	return {
		app
	}
}
// #endif

提示登录

warmLogin() {
				if (!this.hasLogin) {
					uni.showModal({
						title: '未登录',
						content: '登录享受更多',
						showCancel: !this.forcedLogin,
						success: (res) => {
							if (res.confirm) {
								/**
								 * 需要强制登录,用reLaunch
								 */
								if (this.forcedLogin) {
									uni.reLaunch({
										url: '../login/login'
									});
								} else {
									uni.navigateTo({
										url: '../login/login'
									});
								}
							}
						}
					});
				}
			}

登录

<script>
	import {
		mapState,
		mapMutations
	} from 'vuex'
	export default {
		data() {
			return {
				loading: false,
				userInfo: {}
			}
		},
		computed: mapState(['forcedLogin', 'hasLogin']),
		methods: {
			...mapMutations(['login']),
			Login() {
				this.loading = true;
				if (this.loading) {
					uni.login({
						provider: 'weixin',
						success: (res) => {
							this.userInfo.code = res.code;
						}
					});
					uni.getUserProfile({
						desc: '获取用户个人信息',
						success: (res) => {
							this.userInfo.token = res.iv;
							this.userInfo.userInfo = res.userInfo;
							this.toStore(this.userInfo)
						},
						fail: (err) => {
							this.loading = false;
						}
					});
				}
			},
			toStore(user) {
				this.login(user);
				//强制登录reLaunch跳转,返回也使用reLaunch
				if (this.forcedLogin) {
					uni.reLaunch({
						url: '../index/index'
					});
				} else {
					uni.navigateBack();
				}
			}
		}
	}
</script>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值