小程序
小游戏
企业微信
微信支付
扫描小程序码分享
隐藏组件时选用 hidden="{{bool}}" 属性和 wx:if="{{bool}}" 有什么区别吗?
8 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
WXML 语法参考 /条件渲染
条件渲染
wx:if
在框架中,使用 wx:if="" 来判断是否需要渲染该代码块:
wx:if=""
<view wx:if="{{condition}}"> True </view>
也可以用 wx:elif 和 wx:else 来添加一个 else 块:
wx:elif
wx: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/>
<block wx:if="{{true}}"> <view> view1 </view> <view> view2 </view> </block>
注意: <block/> 并不是一个组件,它仅仅是一个包装元素,不会在页面中做任何渲染,只接受控制属性。
wx:if vs hidden
hidden
因为 wx:if 之中的模板也可能包含数据绑定,所以当 wx:if 的条件值切换时,框架有一个局部渲染的过程,因为它会确保条件块在切换时销毁或重新渲染。
同时 wx:if 也是惰性的,如果在初始渲染条件为 false,框架什么也不做,在条件第一次变成真的时候才开始局部渲染。
false
相比之下,hidden 就简单的多,组件始终会被渲染,只是简单的控制显示与隐藏。
一般来说,wx:if 有更高的切换消耗而 hidden 有更高的初始渲染消耗。因此,如果需要频繁切换的情景下,用 hidden 更好,如果在运行时条件不大可能改变则 wx:if 较好。
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
hidden 页面内容数据是加载的,渲染是主动
if是惰性渲染
有区别,具体可以看看微信官方文档里写的。
wx:if 条件为 false 的时候不加载,条件切换的时候决定元素销毁或者重新加载渲染
hidden , 始终加载元素, 条件切换的时候决定元素的显示和隐藏
hidden="{{true}}"会将dom元素渲染到wxml页面上,但实际显示的时候不会显示出来让用户看到。
wx:if="{{false}}"就直接不会将dom元素渲染上去,无论是显示还是代码都看不到
你好,有区别的。
wx:if="{{false}}"的时候,wxml的审查元素上你是找不到他的,没有渲染。
hidden="{{true}}"的时候,审查元素上是可以找到它的,也可以看到内部结构。但无法通过审查元素来修改它的隐形状态。
wxss里面visibility:hidden,可以通过审查元素来修改它的隐形状态。
看需求,如果是一次渲染全部显示,用wx:if,如果频繁控制显示,需要用hidden
顺带学到了
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
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
vshidden
因为
wx:if
之中的模板也可能包含数据绑定,所以当wx:if
的条件值切换时,框架有一个局部渲染的过程,因为它会确保条件块在切换时销毁或重新渲染。同时
wx:if
也是惰性的,如果在初始渲染条件为false
,框架什么也不做,在条件第一次变成真的时候才开始局部渲染。相比之下,
hidden
就简单的多,组件始终会被渲染,只是简单的控制显示与隐藏。一般来说,
wx:if
有更高的切换消耗而hidden
有更高的初始渲染消耗。因此,如果需要频繁切换的情景下,用hidden
更好,如果在运行时条件不大可能改变则wx:if
较好。hidden 页面内容数据是加载的,渲染是主动
if是惰性渲染
有区别,具体可以看看微信官方文档里写的。
wx:if 条件为 false 的时候不加载,条件切换的时候决定元素销毁或者重新加载渲染
hidden , 始终加载元素, 条件切换的时候决定元素的显示和隐藏
hidden="{{true}}"会将dom元素渲染到wxml页面上,但实际显示的时候不会显示出来让用户看到。
wx:if="{{false}}"就直接不会将dom元素渲染上去,无论是显示还是代码都看不到
你好,有区别的。
wx:if="{{false}}"的时候,wxml的审查元素上你是找不到他的,没有渲染。
hidden="{{true}}"的时候,审查元素上是可以找到它的,也可以看到内部结构。但无法通过审查元素来修改它的隐形状态。
wxss里面visibility:hidden,可以通过审查元素来修改它的隐形状态。
看需求,如果是一次渲染全部显示,用wx:if,如果频繁控制显示,需要用hidden
顺带学到了