Uni-app极速入门(二) - 登录demo

需求

背景

1、进入小程序,默认页面判断用户是否已经登录,已经登录则进入首页,没有登录则进入登录页面
2、首页为tabbar,包括首页和设置页,设置页可以退出登录,回到登录页面

页面流转

graph TD A[Index Page] --> C{isLogin} C -->|true| D[HomePage] C -->|false| E[LoginPage] D --> |logout| A E --> |login| D

技术实现

Vue页面

目录结构

页面截图

登录页

设置页

路由配置

pages.json

{
	"pages": [ 
		//pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
		{
			"path": "pages/index/index",
			"style": {
				"navigationStyle":"custom",
                "enablePullDownRefresh": false
			}
		}
	    ,{
            "path" : "pages/main/HomePage",
            "style" :                                                                                    
            {
                "navigationBarTitleText": "",
                "enablePullDownRefresh": false
            }
            
        }
        ,{
            "path" : "pages/setting/Setting/Setting",
            "style" :                                                                                    
            {
                "navigationBarTitleText": "",
                "enablePullDownRefresh": false
            }
            
        }
        ,{
            "path" : "pages/login/Login/Login",
            "style" :                                                                                    
            {
                "navigationBarTitleText": "",
                "enablePullDownRefresh": false,
				"navigationStyle":"custom" // 隐藏导航栏,防止出现回退按钮和首页按钮
            }
            
        }
    ],
	"tabBar": {
		"list": [{
			"pagePath":"pages/main/HomePage",
			"text":"首页"
		}, {
			"pagePath":"pages/setting/Setting/Setting",
			"text":"设置页"
		}]
	},
	"globalStyle": {
		"navigationBarTextStyle": "black",
		"navigationBarTitleText": "uni-app",
		"navigationBarBackgroundColor": "#F8F8F8",
		"backgroundColor": "#F8F8F8"
	}
}

关键代码

index.vue

判断是否已经登录:

<script>
	export default {
		data() {
			return {

			}
		},
		onLoad: function(param) {
			console.log(param.isLogin)
			// 判断用户是否已经登录成功,isLogin参数由其他的页面传入
			if (param.isLogin) {
				uni.switchTab({
					url: '/pages/main/HomePage' //url前面需要加/,否则不会跳转
				})
			} else {
				console.log('进入登录页')
				uni.reLaunch({
					url: '../login/Login/Login'
				})
			}

		},
		methods: {}
	};
</script>

Login.vue

提交以后,重新进入启动页,并传入已经登录成功的参数

    onSubmit() {
	  uni.reLaunch({
	  	url:'../../index/index?isLogin=true' // 提交后,isLogin为true
	  })
    }

Home.vue

空页面,代码略

Setting.vue

退出登录

    logout() {
        uni.reLaunch({
            url:'../../index/index'
        })
    }

方法说明

uni.reLaunch: 关闭所有页面,打开到应用内的某个页面

uni.switchTab: 跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面

posted @ 2022-04-07 18:18  柳云居士  阅读(1675)  评论(0编辑  收藏  举报