# 纯数据字段
纯数据字段是一些 WXML 模板中没用到的 data 字段。从小程序基础库版本 2.8.2 开始支持。
在 exparser 组件框架中,使用纯数据字段有助于提升整体性能。在 glass-easel 组件框架中,使用纯数据字段对整体性能的影响很小。
如果使用 Chaining 形式,不用于 WXML 模板的数据应优先考虑使用 init 函数内的局部变量代替(这样也就用不上纯数据字段了)。
export default Component()
.data(() => ({
// data 中包含的数据应当是用于 WXML 模板的
dataUsedInTemplate: true,
}))
.init(function () {
// 不用于 WXML 模板的数据就写成局部变量
const dataNotUsedInTemplate = {}
})
.register()
# 组件数据中的纯数据字段
指定纯数据字段的方法是在 Component 构造器的 options 定义段中指定 pureDataPattern 为一个正则表达式,字段名符合这个正则表达式的字段将成为纯数据字段。
代码示例:
export default Component({
options: {
pureDataPattern: /^_/ // 指定所有 _ 开头的数据字段为纯数据字段
},
data: {
a: true, // 普通数据字段
_b: true, // 纯数据字段
},
methods: {
myMethod() {
this.data._b // 纯数据字段可以在 this.data 中获取
this.setData({
c: true,
_d: true, // 纯数据字段也可以被 setData 设置
})
},
},
})
上述组件中的纯数据字段不会被应用到 WXML 上:
<view wx:if="{{a}}"> 这行会被展示 </view>
<view wx:if="{{_b}}"> 这行不会被展示 </view>
虽然不能用于 WXML,但纯数据字段可以使用 数据监听器 来监听变化。
# 组件属性中的纯数据字段
属性也可以被指定为纯数据字段(遵循 pureDataPattern 的正则表达式)。属性中的纯数据字段可以像普通属性一样接收外部传入的属性值,但不能将它直接用于组件自身的 WXML 中。
注意:属性中的纯数据字段的属性 observer 永远不会触发!如果想要监听属性值变化,使用 数据监听器 代替。
export default Component({
options: {
pureDataPattern: /^_/
},
properties: {
a: Boolean,
_b: {
type: Boolean,
observer() {
// 不要这样做!这个 observer 永远不会被触发
}
},
}
})
从小程序基础库版本 2.10.1 开始,也可以在组件的 json 文件中配置 pureDataPattern(这样就不需在 js 文件的 options 中配置)。此时,其值应当写成字符串形式:
{
"pureDataPattern": "^_"
}