相关文章推荐
逼格高的李子  ·  Get exclusive jobs on ...·  1 年前    · 
魁梧的灭火器  ·  Outlook将邮件内容中的数据以表格形式发 ...·  1 年前    · 
迷茫的小笼包  ·  关于Vcpkg在VScode中的配置问题_v ...·  2 年前    · 
小百科  ›  在页面初次加载时,组件(封装的隐私授权弹窗)中 wx:if 设置为 true 但无显示? | 微信开放社区
瘦瘦的上铺
1 年前

交流专区
服务市场
微信学堂
文档
小程序
  • 常用主页

    小程序

    小游戏

    企业微信

    微信支付

  • 服务市场
    微信学堂
    文档
登录
公告列表
公告列表
收藏
分享

扫描小程序码分享

回答

置顶 在页面初次加载时,组件(封装的隐私授权弹窗)中 wx:if 设置为 true 但无显示? 精选 热门

A 2023-09-07 572 浏览 问题模块: API和组件

新的隐私授权处理,进页面时需要定位就会触发 wx.onNeedPrivacyAuthorization,打开隐私授权弹窗。 多次编译发现有时会无弹窗显示,但监测数据 isShow 是正常变动到 true 的。这是什么原因,该如何处理呢?

在组件的 attached、ready 生命周期和页面的 show 生命周期中进行 popUp(弹窗显示)、或者刚进页面就触发 wx.onNeedPrivacyAuthorization ,都会出现 wx:if 设置为 true 但不显示的问题。

使用 weui中的半屏组件 mp-half-screen-dialog(看了源码逻辑也是用的wx:if)或者直接自己写样式使用 wx:if 均存在此问题。

推测可能是部分异步加载基础库/小程序底层内容在此时未完全加载完成导致?开始设置了最短 40ms 的 setTimeout 但仍然存在此问题,应该不是任务轮次导致。

以下为涉及到此问题的代码,已去除部分与此问题无关的逻辑。

js 部分:

    data: {
    isShow: false, // wx:if 绑定的字段
  lifetimes: {
    attached: function () {
      const that = this
      if (that.data._firstCheck) { // 传入属性,判断是否需要进页面时就确定授权情况
        if (wx.canIUse('getPrivacySetting')) {
          wx.getPrivacySetting({
            success: (res) => {
              if (res.needAuthorization) {
                  that.popUp()
  pageLifetimes: {
    show: function () {
      const that = this
      if (wx.canIUse('onNeedPrivacyAuthorization')) {
        wx.onNeedPrivacyAuthorization(resolve => {
          // 监听需授权事件,且仅处理最后一个被触发的需授权事件
          that.data._privacyResolve = resolve
          that.popUp()
  methods: {
    popUp() {
      const




    
 that = this
      if (that.data.isShow === false) {
        that.setData({
          isShow: true


wxml 部分:

<mp-half-screen-dialog show="{{isShow}}" maskClosable="{{false}}" title="隐私提示" maskClosable="{{false}}" closabled="{{false}}">
  <view slot="desc">
    <text>隐私提示信息</text>
  </view>
  <view slot="footer">
    <button type="default">不同意</button>
    <button id="agree-btn" type="primary" open-type="agreePrivacyAuthorization">同意</button>
  </view>
</mp-half-screen-dialog>
最后一次编辑于 2023-09-07
回答 关注问题 邀请回答
收藏

扫描小程序码分享

复制链接
关闭

请选择投诉理由

  • 广告内容
  • 违法违规
  • 恶意灌水内容
  • 其他

删除当前帖子

删除后帖子内容及评论将一并被删除,且不可恢复。

删除 取消
关闭

确定删除?

删除后不可恢复

取消 确定
关闭

关注“微信开放社区”公众号

关注后,可在微信内接收相应的重要提醒。

请使用微信扫描二维码关注 “微信开放社区” 公众号

关闭

反馈

 
推荐文章
逼格高的李子  ·  Get exclusive jobs on InCareer
1 年前
魁梧的灭火器  ·  Outlook将邮件内容中的数据以表格形式发送_outlook发送复杂表格-CSDN博客
1 年前
迷茫的小笼包  ·  关于Vcpkg在VScode中的配置问题_vcpkg vscode_A-SHY-MAN的博客-CSDN博客
2 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
小百科 - 百科知识指南
© 2024 ~ 沪ICP备11025650号