《智能前端技术与实践》——第 2 章 前端开发基础 ——2.7 微信小程序开发——2.7.2 页面描述文件(1): https://developer.aliyun.com/article/1228017?groupCode=tech_library
2.条件渲染
所谓条件渲染是指根据绑定表达式的值来判断是否渲染当前组件,如代码清单 2-32 所示。
代码清单 2-32
<!-- 三元运算 --><viewclass="description"hidden="{{desFlag?true:false}}">{{description}} </view>
在代码清单 2-32 中,当 desFlag 变量的值为 true 时,view 组件将不会被渲染;当 desFlag 变量的值为 false 时,将 view 组件渲染输出到页面。
在小程序中,使用另一种方式来进行类似的条件渲染,即使用 wx:if=""来判断是否需要渲 染该代码块,如代码清单 2-33 所示。
代码清单 2-33
<viewwx:if="{{condition}}"> True </view>
在代码清单 2-33 中,当 condition 变量的值为 true 时,view 组件将被渲染输出;否则,该组 件将不会被渲染。我们也可以用 wx:elif 和 wx:else 添加一个 else 块,如代码清单 2-34 所示。
代码清单 2-34
<viewwx:if="{{length > 5}}"> 1 </view><viewwx:elif="{{length > 2}}"> 2 </view><viewwx:else> 3 </view>
在代码清单 2-34 中,当 length 大于 5 时,界面中渲染输出的数字是 1;当 length 大于 2 且小于 或等于 5 时,界面中渲染输出的数字是 2;当 length 小于或等于 2 时,界面中渲染输出的值是 3。
接下来,我们看一下 wx:if 与 hidden 之间的区别。首先,控制渲染的逻辑变量的含义相反。 其次,wx:if 有更高的切换消耗,因为 wx:if 之中的模板可能包含数据绑定,当 wx:if 的条件值 切换时,框架有一个局部渲染的过程,来确保条件块在切换时销毁或重新渲染。而 hidden 就比 较简单,组件始终会被渲染,只是简单地控制显示与隐藏。所以,如果需要频繁切换,用 hidden 更好;如果运行时条件不大可能改变,则使用 wx:if 较好。
因为 wx:if 是一个控制属性,所以需要将它添加到一个标签上。如果一次性判断多个组件 标签,我们可以使用一个标签将多个组件包装起来,并在上面使用 wx:if 控制属性。 注意,并不是一个组件,它仅仅是一个包装元素,不会在页面中做任何渲染,只接收 控制属性,如代码清单 2-35 所示。
代码清单 2-35
<blockwx:if="{{true}}"><view> view1 </view><view> view2 </view></block>
运行结果如图 2-39 所示。
代码清单 2-35 中,当条件为 true 时,标签包含的两个 view 组件的值会被渲染出 来;当条件为 false 时,不会被渲染出来。
《智能前端技术与实践》——第 2 章 前端开发基础 ——2.7 微信小程序开发——2.7.2 页面描述文件(3): https://developer.aliyun.com/article/1228015?groupCode=tech_library