<block wx:if="{{isLoggedIn}}">
<block wx:if="{{canShowProfile}}">
<view class="profile-header">
<view class="avatar-wrapper">
<open-data type="userAvatarUrl" class="avatar"></open-data>
</view>
<view class="info-area">
<open-data type="userNickName" class="nickname"></open-data>
</view>
</view>
</block>
</block>
// JS 片段:展示页面状态的更新逻辑
/*
文件路径: /pages/my/my.js
该片段展示了在 onShow -> refreshPageData -> updatePageDisplay 的调用链中,
我们最终是如何设置 isLoggedIn 和 canShowProfile 这两个关键状态的。
日志已确认,传入的 userInfo 对象包含了从数据库获取的、带有真实 avatarUrl 和 nickName 的数据。
*/
updatePageDisplay(userInfo) {
if (userInfo && userInfo._id) {
// 确认用户已登录
this.setData({
isLoggedIn: true,
userInfo: userInfo
// ... 其他数据显示正常
});
// 延迟渲染,确保登录态稳定
setTimeout(() => {
this.setData({ canShowProfile: true });
}, 100);
} else {
// 处理未登录状态
this.setData({
isLoggedIn: false,
canShowProfile: false
});
}
},
【复现步骤】
- 使用真实的 AppID (
wx******
)。 - 在开发者工具中,执行“清除缓存”->“全部清除”。
- 编译项目,进入“我的”页面 (
pages/my/my
)。 - 通过
console
日志确认app.js
的静默登录已成功,并获取到了包含真实avatarUrl
和nickName
的用户信息。 - 观察“我的”页面渲染结果。
【期望结果】
页面顶部的头像和昵称,能通过 <open-data type="userAvatarUrl">
和 <open-data type="userNickName">
标签,正常显示用户的真实微信头像和昵称。
【实际结果】
头像显示为灰色默认图标,昵称显示为“微信用户”。
【已排除的可能与环境信息】
- AppID: 已确认使用的是真实合法的 AppID (
wx6ec****
),而非测试号。 - 用户账号: 已确认用于测试的微信号本身设置了头像和自定义昵称。
- 测试环境: 问题在开发者工具模拟器和真机预览上均稳定复现。
- 数据流: 已通过
console.log
确认,app.globalData
和页面的data
均已在渲染前正确接收到从云函数返回的、包含avatarUrl
和nickName
的完整用户对象。问题精确地出在<open-data>
组件的最终渲染环节。 - 开发者工具版本: [请在这里填写你的开发者工具版本号,例如:Stable 1.06.2503300]
- 操作系统: [请在这里填写你的操作系统,例如:macOS macos sequoia 15.5 ]
测试手机信息: [mate60 pro , version 8.0.60]
请参考文档:https://developers.weixin.qq.com/miniprogram/dev/component/open-data.html