之前在页面上写了两个textarea 标签,通过wx:if来判断是否存在缓存来显示对应的 textarea,但是用过的小伙伴,居然发现输入的字体居然双影的,就是说输入框中,对实时监控用户输入信息,两个textarea 都存在页面中吗?
我们来说说对于wx:if
<textarea placeholder='' bindinput='listenerTextarea' wx:if="{{textarea}}">{{textarea}}</textarea>
<textarea placeholder='请输入表达一下你的创意或想法' wx:else bindinput='listenerTextarea'></textarea>
通过wx:if 中的 缓存textarea来决定textarea的显示与隐藏。
wx:if
vs hidden
当 wx:if
的条件值切换时,框架有一个局部渲染的过程,因为它会确保条件块在切换时销毁或重新渲染。
同时 wx:if
也是惰性的,如果在初始渲染条件为 false
,框架什么也不做,在条件第一次变成真的时候才开始局部渲染。
相比之下,hidden
就简单的多,组件始终会被渲染,只是简单的控制显示与隐藏。
一般来说,wx:if
有更高的切换消耗而 hidden
有更高的初始渲染消耗。因此,如果需要频繁切换的情景下,用 hidden
更好,如果在运行时条件不大可能改变则 wx:if
较好。
这里我是用三元表达式,通过判断缓存的 textarea 是否存在,来决定 placeholder 的显示内容
<textarea placeholder='{{textarea ? " " : "请输入表达一下你的创意或想法"}}' bindinput='listenerTextarea' value='{{textarea}}'></textarea>