微信小程序-气泡框 Popover

本文记录了在微信小程序中实现气泡框Popover时遇到的问题:真机上点击后箭头不消失。通过排查发现是由于setData导致组件被复制。解决方案是添加wx:if避免此现象。同时提出了对微信小程序组件渲染机制的猜想。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

写在前面

问题截图

popover问题截图

问题描述
  • 模拟器显示正常,但在真机上点击后,气泡框的箭头并没有消失,且点击同一级别区域,能利用覆盖消除箭头。【是不是一个很可爱的bug?
问题解决过程记录
  • 定位问题发生的原因范围

    • 样式
      • 样式在判断显示条件(wx:if="{ {visible}}")生效后,仍然渲染
      • 否定原因
        • 查询代码发现,整个样式背景的设定是在::before伪元素选择器中
        • 且显示条件生效,在调试器中已没有该元素,但仍显示
    • 逻辑
      • 会不会是组件在渲染时,多渲染一份,我们使用判断条件进行开关时,只是对其中一个进行了操作
      • 怀疑依据
        • popover问题依据截图
        • 上图可见:在popover组件下,有2个通过<slot>插入的相同内容
  • 开始解决问题

    • 查询官方关于slot方面的介绍
      • 官方slot基础例子
    • 基于官方基础代码,复现问题
      • 产生一个child-tag组件,并在其中编写
        // components/child-tag.js.js
        Component({
                 
          options: {
                 
            multipleSlots: true // 在组件定义时的选项中启用多slot支持
          },
          /**
           * 组件的属性列表
           */
          properties: {
                 
        
          },
          relations: {
                 
            './component-tag-name': {
                 
              type: 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值