您好,登錄后才能下訂單哦!
這篇“微信小程序個人中心頁怎么制作”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“微信小程序個人中心頁怎么制作”文章吧。
先進行頁面分析
個人中心頁有兩種狀態,即未登錄和已登錄,所以要求不同數據驅動產生的不同頁面
點擊登錄/退出登錄按鈕需要響應合理邏輯,并改變按鈕樣式
只有登錄狀態下才會顯示我的錢包按鈕
頁面結構
<!--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進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。