收藏
回答

open-data 组件在真机和模拟器均无法正常渲染用户头像和昵称(已排除测试号和缓存问题)?

<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 
    });
  }
},


【复现步骤】

  1. 使用真实的 AppID (wx******)。
  2. 在开发者工具中,执行“清除缓存”->“全部清除”。
  3. 编译项目,进入“我的”页面 (pages/my/my)。
  4. 通过 console 日志确认 app.js 的静默登录已成功,并获取到了包含真实 avatarUrlnickName 的用户信息。
  5. 观察“我的”页面渲染结果。

【期望结果】

页面顶部的头像和昵称,能通过 <open-data type="userAvatarUrl"><open-data type="userNickName"> 标签,正常显示用户的真实微信头像和昵称。

【实际结果】

头像显示为灰色默认图标,昵称显示为“微信用户”。

【已排除的可能与环境信息】

  1. AppID: 已确认使用的是真实合法的 AppID (wx6ec****),而非测试号。
  2. 用户账号: 已确认用于测试的微信号本身设置了头像和自定义昵称。
  3. 测试环境: 问题在开发者工具模拟器真机预览上均稳定复现。
  4. 数据流: 已通过 console.log 确认,app.globalData 和页面的 data 均已在渲染前正确接收到从云函数返回的、包含 avatarUrlnickName 的完整用户对象。问题精确地出在 <open-data> 组件的最终渲染环节。
  5. 开发者工具版本: [请在这里填写你的开发者工具版本号,例如:Stable 1.06.2503300]
  6. 操作系统: [请在这里填写你的操作系统,例如:macOS macos sequoia 15.5 ]

测试手机信息: [mate60 pro , version 8.0.60]


回答关注问题邀请回答
收藏

1 个回答

登录 后发表内容