收藏
回答

隐藏组件?

隐藏组件时选用 hidden="{{bool}}" 属性和 wx:if="{{bool}}" 有什么区别吗?

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

8 个回答

  • 臭臭
    臭臭
    2021-11-16

    WXML 语法参考 /条件渲染

    条件渲染

    wx:if

    在框架中,使用 wx:if="" 来判断是否需要渲染该代码块:

    <view wx:if="{{condition}}"> True </view>
    

    也可以用 wx:elif 和 wx:else 来添加一个 else 块:

    <view wx:if="{{length > 5}}"> 1 </view>
    <view wx:elif="{{length > 2}}"> 2 </view>
    <view wx:else> 3 </view>
    

    block wx:if

    因为 wx:if 是一个控制属性,需要将它添加到一个标签上。如果要一次性判断多个组件标签,可以使用一个 <block/> 标签将多个组件包装起来,并在上边使用 wx:if 控制属性。

    <block wx:if="{{true}}">
      <view> view1 </view>
      <view> view2 </view>
    </block>
    

    注意: <block/> 并不是一个组件,它仅仅是一个包装元素,不会在页面中做任何渲染,只接受控制属性。

    wx:if vs hidden

    因为 wx:if 之中的模板也可能包含数据绑定,所以当 wx:if 的条件值切换时,框架有一个局部渲染的过程,因为它会确保条件块在切换时销毁或重新渲染。

    同时 wx:if 也是惰性的,如果在初始渲染条件为 false,框架什么也不做,在条件第一次变成真的时候才开始局部渲染。

    相比之下,hidden 就简单的多,组件始终会被渲染,只是简单的控制显示与隐藏。

    一般来说,wx:if 有更高的切换消耗而 hidden 有更高的初始渲染消耗。因此,如果需要频繁切换的情景下,用 hidden 更好,如果在运行时条件不大可能改变则 wx:if 较好。


    2021-11-16
    有用 3
    回复
  • 游戏人生
    游戏人生
    2021-11-16

    hidden 页面内容数据是加载的,渲染是主动

    if是惰性渲染

    2021-11-16
    有用 3
    回复
  • 知非
    知非
    2021-11-16

    有区别,具体可以看看微信官方文档里写的。

    2021-11-16
    有用 2
    回复
  • Z
    Z
    2021-11-16

    wx:if 条件为 false 的时候不加载,条件切换的时候决定元素销毁或者重新加载渲染

    hidden , 始终加载元素, 条件切换的时候决定元素的显示和隐藏

    2021-11-16
    有用 2
    回复
  • 晨曦
    晨曦
    2021-11-16

    hidden="{{true}}"会将dom元素渲染到wxml页面上,但实际显示的时候不会显示出来让用户看到。

    wx:if="{{false}}"就直接不会将dom元素渲染上去,无论是显示还是代码都看不到

    2021-11-16
    有用 2
    回复
  • 曹孟良
    曹孟良
    2021-11-16

    你好,有区别的。

    wx:if="{{false}}"的时候,wxml的审查元素上你是找不到他的,没有渲染。

    hidden="{{true}}"的时候,审查元素上是可以找到它的,也可以看到内部结构。但无法通过审查元素来修改它的隐形状态。

    wxss里面visibility:hidden,可以通过审查元素来修改它的隐形状态。

    2021-11-16
    有用 2
    回复
  • 没事
    没事
    2021-11-16

    看需求,如果是一次渲染全部显示,用wx:if,如果频繁控制显示,需要用hidden

    2021-11-16
    有用 1
    回复
  • PD
    PD
    2021-11-16

    顺带学到了

    2021-11-16
    有用 1
    回复
登录 后发表内容