收藏
回答

hidden属性部分情况不能动态变化

框架类型 问题类型 终端类型 微信版本 基础库版本
小程序 Bug 工具 7.0.3 2.6.5

- 当前 Bug 的表现(可附上截图)

  1. wxml 使用 hidden="{{!array.length}}"

  2. js 中对 array 进行差量更新,无法触发 hidden 变化,只能全量更新

<view class="intro">
  <!-- hidden 仅在全量设置时会切换状态,差量追加不会触发 hidden 变化 -->
  <view hidden="{{!array.length}}">
    show
  </view>
  <view>
    array.length={{array.length}}
  </view>
  <button bindtap="clearArray">清空数组</button>
  <button bindtap="addItem">差量追加数组</button>
  <button bindtap="setArray">全量设置数组</button>
  <view wx:for="{{array}}">
    {{item}}
  </view>
</view>
const app = getApp()
 
Page({
  data: {
    array:[]
  },
  addItem(){
    const array = this.data.array
    this.setData({
      ['array['+array.length+']']:array.length
    })
  },
  setArray(){
    this.setData({
      array: [0,1,2,3,4,5]
    })
  },
  clearArray(){
    this.setData({
      array:[]
    })
  }
})

- 预期表现

当对 array 差量更新时,hidden="{{!array.length}}" 可以正常变化

- 复现路径

1.点击”差量追加数组“按钮,会向array 中追加一条数据,此时 hidden 属性判断未生效,仍是隐藏状态,应该是显示状态

2.点击”全量设置数组“按钮,会全量更新 array,此时 hidden 属性判断会生效,处于显示状态

3.点击”清空数组“按钮,会全量清除 array,,此时 hidden 属性判断会生效,处于显示状态,此时可以继续测试差量与全量的差异

- 提供一个最简复现 Demo


https://developers.weixin.qq.com/s/yLfleHms7975

最后一次编辑于  2019-04-17
回答关注问题邀请回答
收藏

1 个回答

  • RedHood
    RedHood
    2019-04-22

    这个是目前算法实现上导致的问题,已反馈给相关开发,但短期内应该无法修复,不是很容易修复的问题。

    2019-04-22
    有用 3
    回复 2
    • Air
      Air
      2022-05-26
      三年了 哥 请问这个vshow修复了吗
      2022-05-26
      回复
    • 从来如此便对么
      从来如此便对么
      2023-05-11回复Air
      1.用 v-if 来代替此功能 -->
      <view v-if="isShow">Hello</view>
      2.通过 :style 的方式也能达到一样的效果 -->
      <view :style="isShow?'':'display:none;'">Hello!</view>
      2023-05-11
      回复
登录 后发表内容