前言:这一节设想完成的功能为进入小程序后请求授权信息,用户授权登录后,弹出宠物登记页面,并根据宠物类型播放背景音乐
小程序昵称头像在之前的版本获取规则为触发后弹出用户授权弹窗,授权后可直接获取用户头像和昵称,但是在2.27.1版本后,小程序收回了wx.getUserProfile接口,通过 wx.getUserInfo 接口获取用户头像将统一返回默认灰色头像,昵称将统一返回 “微信用户”。
当前版本为3.31,这里使用新版推荐方式获取用户数据,也可降级到2.27.1版本前,使用之前的接口。
1、编写底部tabBar页面
拟设置三个tabBar,分别为记录,成长,Ta的
首先创建Icons文件夹,用于保存tabBar图片
1、从iconfont中选取几个图标来充当tabBar图标,每个图标各选择两组,分别为选中和未选中
iconfont-阿里巴巴矢量图标库
2、在app.json中添加页面
3、添加tabBar
在app.json中添加
"tabBar": {
"color": "#999",
"selectedColor": "#FF5700",
"backgroundColor": "#fafafa",
"list": [{
"pagePath": "pages/record/record",
"text": "记录",
"iconPath": "./icons/1.png",
"selectedIconPath": "./icons/3.png"
},
{
"pagePath": "pages/grow/grow",
"text": "成长点滴",
"iconPath": "./icons/6.png",
"selectedIconPath": "./icons/5.png"
},{
"pagePath": "pages/Ta/Ta",
"text": "Ta的",
"iconPath": "./icons/2.png",
"selectedIconPath": "./icons/4.png"
}]},
此时页面效果
2、编写Ta的页面
页面未登录时,显示默认头像和默认昵称,点击编辑个人信息后,显示个人信息编辑页面
头像可选择使用微信头像或者从相册上传头像,昵称同上
首先编写一个简单的展示页面,未登录时,头像,昵称和ID显示默认值
<!--pages/Ta/Ta.wxml-->
<view class="pet_wrapper">
<!-- 用户信息 -->
<view class="user_info_wrapper">
<view class="user_info">
<image src="{{avatarUrl}}" mode="widthFix"/>
<view class="user">
<view class="user_id">ID:{{userId}}</view>
<view class="user_name">{{nickName}}</view>
</view>
<button class="edit_user_info" bind:tap="editUserInfo">编辑个人信息</button>
</view>
</view>
<!-- 功能栏 -->
</view>
// pages/Ta/Ta.js
const defaultAvatarUrl = 'https://mmbiz.qpic.cn/mmbiz/icTdbqWNOwNRna42FI242Lcia07jQodd2FJGIYQfG0LAJGFxM4FbnQP6yfMxBgJ0F3YRqJCJ1aPAK2dQagdusBZg/0'
const defaultNickName = "铲屎官"
const defaultUserId = "001"
Page({
/**
* 页面的初始数据
*/
data: {
avatarUrl: defaultAvatarUrl,
nickName: defaultNickName,
userId: defaultUserId
},
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
},
editUserInfo(){
wx.navigateTo({
url: '/pages/userInfo/userInfo',
})
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady() {
},
/**
* 生命周期函数--监听页面显示
*/
onShow() {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide() {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload() {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh() {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom() {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage() {
}
})
/* pages/Ta/Ta.wxss */
.pet_wrapper{
.user_info_wrapper{
.user_info{
display: flex;
margin: 20rpx;
image{
flex: 1;
width: 30rpx;
height: 30rpx;
border-radius: 100%;
}
.user{
flex: 2;
display: flex;
flex-direction: column;
width: 80rpx;
height: 100rpx;
margin-left: 30rpx;
.user_id{
flex: 2;
font-size: 28rpx;
}
.user_name{
flex: 1;
font-size: 28rpx;
}
}
button{
flex: 1;
width: 80rpx;
height: 60rpx;
background-color: #fff;
justify-content: center;
font-size: 25rpx;
}
}
}
}
给button绑定事件,当点击按钮时,跳转到个人信息编辑页
在app.json中添加userInfo
设置userInfo页面的顶部导航栏名称
基本页面仿照宠本本小程序进行编写
<!--pages/userInfo/userInfo.wxml-->
<view class="edit_userInfo_wrap">
<!-- 用户头像 -->
<view class="user_avatar_wrap">
<image src="{{userInfo.avatarUrl}}" mode="widthFix"/>
</view>
<!-- 用户基本信息 -->
<view class="user_info_wrap">
<!-- 昵称设置 -->
<view class="user_name_wrap">
<view class="user_name" >
<text>铲屎官昵称</text>
<navigator url="/pages/editNickName/editNickName">
{{userInfo.nickName}}
</navigator>
</view>
</view>
<!-- 基本信息设置 -->
<view class="edit_user_info_wrap">
<view class="user_birthday">
<text>生日</text>
</view>
<view class="user_sex">
<text>性别</text>
</view>
<view class="user_address">
<text>地区</text>
</view>
</view>
<!-- 手机号设置 -->
<view class="phone_wrap">
<view class="userId_wrap">
<text>ID</text>
<view class="user_id">
{{userInfo.userId}}
</view>
</view>
<view class="user_telPhone">
<text>手机号</text>
{{userInfo.telPhone}}
</view>
</view>
</view>
<!-- 保存按钮 -->
<view class="save_button">
<button >保存编辑</button>
</view>
</view>
/* pages/userInfo/userInfo.wxss */
page{
background-color: #f5f5ed;
}
.edit_userInfo_wrap{
display: flex;
flex-direction: column;
height: 100vh;
.user_avatar_wrap{
flex: 1;
display: flex;
align-items: center;
justify-content: center;
margin-top: 20rpx;
image{
border:2rpx solid white;
width: 150rpx;
height: 150rpx;
border-radius: 100%;
}
}
.user_info_wrap{
flex: 6;
line-height: 100rpx;
margin: 20rpx 50rpx 50rpx 50rpx;
font-size: 26rpx;
.user_name_wrap{
background-color: #fff;
border-radius: 25rpx;
.user_name{
margin: 30rpx;
display: flex;
text{
flex: 1;
color: #615839;
font-size: 30rpx;
}
navigator{
}
}
}
.edit_user_info_wrap{
background-color: #fff;
border-radius: 25rpx;
.user_birthday{
text{
color: #615839;
font-size: 30rpx;
}
margin: 30rpx;
border-bottom: 1rpx solid #f5f5ed;
}
.user_sex{
text{
color: #615839;
font-size: 30rpx;
}
margin: 30rpx;
border-bottom: 1rpx solid #f5f5ed;
}
.user_address{
text{
color: #615839;
font-size: 30rpx;
}
margin: 30rpx;
}
}
.phone_wrap{
background-color: #fff;
border-radius: 25rpx;
.userId_wrap{
display: flex;
margin: 30rpx;
border-bottom: 1rpx solid #f5f5ed;
text{
flex: 1;
color: #615839;
font-size: 30rpx;
}
.user_id{
}
}
.user_telPhone{
text{
color: #615839;
font-size: 30rpx;
}
margin: 30rpx;
}
}
}
.save_button{
flex: 1;
border-radius: 40rpx 40rpx 0 0 ;
background-color: #fff;
button{
margin-top: 15rpx;
width: 80%;
border-radius: 30rpx;
font-size: 28rpx;
font-weight: 600;
background-color: #fee05a;
}
}
}
此时的页面效果:
在下节完成头像、昵称、手机号的获取和生日、性别、地区组件的编写,属实写累了0.0