WeChat 애플릿 조건부 렌더링 wx:if


wx:if

MINA에서는 wx:if="{{condition}}"를 사용하여 코드 블록을 렌더링해야 하는지 여부를 결정합니다. wx:if="{{condition}}"来判断是否需要渲染该代码块:

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

也可以用wx:elifwx: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的条件值切换时,MINA有一个局部渲染的过程,因为它会确保条件块在切换时销毁或重新渲染。

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

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

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

를 사용할 수도 있습니다. wx: elifwx:else를 사용하여 else 블록을 추가합니다. 🎜rrreee

wx:if< 때문에 wx:if🎜🎜를 차단합니다. /code >는 레이블에 추가해야 하는 제어 속성입니다. 그러나 여러 구성요소 태그를 한 번에 판단하려면 <block/> 태그를 사용하여 여러 구성요소를 래핑하고 상단에 wx:ifControl을 사용할 수 있습니다. 속성. 🎜rrreee🎜참고: <block/>는 구성 요소가 아니며 단지 래핑 요소일 뿐이며 페이지에서 렌더링을 수행하지 않으며 허용만 합니다. 제어 속성 . 🎜

wx:ifhidden🎜🎜wx:if의 템플릿도 데이터 바인딩을 포함할 수 있으므로 wx:if의 조건 값이 전환되면 MINA는 전환 시 조건 블록이 삭제되거나 다시 렌더링되도록 보장하기 때문에 부분 렌더링 프로세스를 갖습니다. 🎜🎜동시에 wx:iflazy입니다. 초기 렌더링 조건이 false이면 MINA는 아무것도 하지 않습니다. 조건이 실제가 될 때만 부분 렌더링이 시작됩니다. 🎜🎜반면 hidden은 훨씬 간단하며 구성 요소는 항상 렌더링되며 단순히 표시 및 숨기기만 제어합니다. 🎜🎜일반적으로 wx:if는 전환 비용이 더 높고 hidden은 초기 렌더링 비용이 더 높습니다. 따라서 빈번한 전환이 필요한 경우에는 hidden을 사용하는 것이 좋습니다. 런타임 중에 조건이 변경될 가능성이 없다면 wx:if를 사용하는 것이 좋습니다. 🎜