小程序
小游戏
企业微信
微信支付
扫描小程序码分享
官方文档在不同地方提到过这二者,但没有说明关于二者有什么区别?
从纯数据字段上的介绍上说,纯数据字段感觉和非data 字段一样,但是官方有一句话,“能用非Data字段不用纯数据字段”,但没有说明理由。
这是很是迷惑。
4 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
本质上两种都指的是:不会显示在视图层上的数据,也就是不会参与页面/组件渲染(即使你通过setData改变值也不会应用到视图层),只是在逻辑层内改变和调用。
纯数据字段定义在data对象中,而非data字段你可以类似下面定义:
// ① Page({ pageData: { test: true // 获取this.pageData.test }, data: {} }) // ② let pageData = {} Page({ data: {}, func() { pageData.test = true console.log(pageData.test) } })
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
1.非data字段无法被observers侦听,observers只能侦听properties和data下的属性。
2.在Component自定义组件里也无法在一开始绑定到Component属性上,只能在attached里手动设置,像this.myCustomData = {a: 1},因为除了原生的属性,其他的会被忽略。
我理解 纯数据字段既能声明在data里,也能通过pureDataPattern把properties上的字段改成纯数据字段。如果官方有说“能用非Data字段不用纯数据字段”,可以这样理解,存数据字段建议用在properties字段上,其他情况用非Data字段
简单点:wxml用不到到的变量不要定义到 Page({data: {}})里边
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
本质上两种都指的是:不会显示在视图层上的数据,也就是不会参与页面/组件渲染(即使你通过setData改变值也不会应用到视图层),只是在逻辑层内改变和调用。
纯数据字段定义在data对象中,而非data字段你可以类似下面定义:
// ① Page({ pageData: { test: true // 获取this.pageData.test }, data: {} }) // ② let pageData = {} Page({ data: {}, func() { pageData.test = true console.log(pageData.test) } })
1.非data字段无法被observers侦听,observers只能侦听properties和data下的属性。
2.在Component自定义组件里也无法在一开始绑定到Component属性上,只能在attached里手动设置,像this.myCustomData = {a: 1},因为除了原生的属性,其他的会被忽略。
我理解 纯数据字段既能声明在data里,也能通过pureDataPattern把properties上的字段改成纯数据字段。如果官方有说“能用非Data字段不用纯数据字段”,可以这样理解,存数据字段建议用在properties字段上,其他情况用非Data字段
简单点:wxml用不到到的变量不要定义到 Page({data: {}})里边