您好,登录后才能下订单哦!
这篇“微信小程序个人中心页怎么制作”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“微信小程序个人中心页怎么制作”文章吧。
先进行页面分析
个人中心页有两种状态,即未登录和已登录,所以要求不同数据驱动产生的不同页面
点击登录/退出登录按钮需要响应合理逻辑,并改变按钮样式
只有登录状态下才会显示我的钱包按钮
页面结构
<!--pages/my/index.wxml-->
<view class="container">
<view class="user-info">
<!-- 用户未登录就没有头像-->
<block wx:if="{{userInfo.avatarUrl != ''}}">
<image src="{{userInfo.avatarUrl}}"></image>
</block>
<text>{{userInfo.nickName}}</text>
</view>
<!-- 用户未登录就没有钱包按钮-->
<block wx:if="{{userInfo.avatarUrl != ''}}">
<view class="my-wallet tapbar" bindtap="movetoWallet">
<text>我的钱包</text>
<text>></text>
</view>
</block>
<button bindtap="bindAction" class="btn-login" hover-class="gray" type="{{bType}}" >{{actionText}}</button>
</view>
复制代码
指令wx:if="boolean":
当boolean为true,被它(block)包裹的元素将会显示,否则不现实,这样可以处理在未登录状态下不显示头像和钱包按钮
页面样式
/* pages/my/index.wxss */
.user-info{
background-color: #fff;
padding-top: 60rpx;
}
.user-info image{
display: block;
width: 180rpx;
height: 180rpx;
border-radius: 50%;
margin: 0 auto 40rpx;
box-shadow: 0 0 20rpx rgba(0,0,0,.2)
}
.user-info text{
display: block;
text-align: center;
padding: 30rpx 0;
margin-bottom: 30rpx;
}
.btn-login{
position: absolute;
bottom: 60rpx;
width: 90%;
left: 50%;
margin-left: -45%;
}
.gray{
background-color: #ccc;
}
复制代码
页面数据逻辑(未登录状态下的数据模板初始值定义在data对象里)
// pages/my/index.js
Page({
data:{
// 用户信息
userInfo: {
avatarUrl: "",
nickName: "未登录"
},
bType: "primary", // 按钮类型
actionText: "登录", // 按钮文字提示
lock: false //登录按钮状态,false表示未登录
},
// 页面加载
onLoad:function(){
// 设置本页导航标题
wx.setNavigationBarTitle({
title: '个人中心'
})
// 获取本地数据-用户信息
wx.getStorage({
key: 'userInfo',
// 能获取到则显示用户信息,并保持登录状态,不能就什么也不做
success: (res) => {
wx.hideLoading();
this.setData({
userInfo: {
avatarUrl: res.data.userInfo.avatarUrl,
nickName: res.data.userInfo.nickName
},
bType: res.data.bType,
actionText: res.data.actionText,
lock: true
})
}
});
},
// 登录或退出登录按钮点击事件
bindAction: function(){
this.data.lock = !this.data.lock
// 如果没有登录,登录按钮操作
if(this.data.lock){
wx.showLoading({
title: "正在登录"
});
wx.login({
success: (res) => {
wx.hideLoading();
wx.getUserInfo({
withCredentials: false,
success: (res) => {
this.setData({
userInfo: {
avatarUrl: res.userInfo.avatarUrl,
nickName: res.userInfo.nickName
},
bType: "warn",
actionText: "退出登录"
});
// 存储用户信息到本地
wx.setStorage({
key: 'userInfo',
data: {
userInfo: {
avatarUrl: res.userInfo.avatarUrl,
nickName: res.userInfo.nickName
},
bType: "warn",
actionText: "退出登录"
},
success: function(res){
console.log("存储成功")
}
})
}
})
}
})
// 如果已经登录,退出登录按钮操作
}else{
wx.showModal({
title: "确认退出?",
content: "退出后将不能使用ofo",
success: (res) => {
if(res.confirm){
console.log("确定")
// 退出登录则移除本地用户信息
wx.removeStorageSync('userInfo')
this.setData({
userInfo: {
avatarUrl: "",
nickName: "未登录"
},
bType: "primary",
actionText: "登录"
})
}else {
console.log("cancel")
this.setData({
lock: true
})
}
}
})
}
},
// 跳转至钱包
movetoWallet: function(){
wx.navigateTo({
url: '../wallet/index'
})
}
})
复制代码
使用wx.login({})API来进行登录,使用wx.getUserInfo({})API来获取用户信息
我们将用户信息使用wx.setStorage({})API和wx.getStorage({})这两个API来设置和获取本地存储,用于模拟维护用户登录状态。真实情况下需要使用session
以上就是关于“微信小程序个人中心页怎么制作”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。