基础库 2.11.1 开始支持,低版本需做兼容处理。
有些场景中,只是页面 data
的渲染结果会比较局限。有时会想要额外展示一些可变的内容,如展示的广告图片 URL 等。
这种情况下可以使用“动态”初始渲染缓存的方式。首先,配置 "initialRenderingCache": "dynamic"
:
{
"initialRenderingCache": "dynamic"
}
此时,初始渲染缓存不会被自动启用,还需要在页面中调用 this.setInitialRenderingCache(dynamicData)
才能启用。其中, dynamicData
是一组数据,与 data
一起参与页面 WXML 渲染。
Page({
data: {
loading: true
},
onReady: function() {
this.setInitialRenderingCache({
loadingHint: '正在加载' // 这一部分数据将被应用于界面上,相当于在初始 data 基础上额外进行一次 setData
})
}
})
<view wx:if="{{loading}}">{{loadingHint}}</view>
从原理上说,在动态生成初始渲染缓存的方式下,页面会在后台使用动态数据重新渲染一次,因而开销相对较大。因而要尽量避免频繁调用 this.setInitialRenderingCache
,如果在一个页面内多次调用,仅最后一次调用生效。
注意:
this.setInitialRenderingCache
调用时机不能早于Page
的onReady
或Component
的ready
生命周期,否则可能对性能有负面影响。- 如果想禁用初始渲染缓存,调用
this.setInitialRenderingCache(null)
。