收藏
回答

纯数据字段与非 data 字段有什么区别?

官方文档在不同地方提到过这二者,但没有说明关于二者有什么区别?

从纯数据字段上的介绍上说,纯数据字段感觉和非data 字段一样,但是官方有一句话,“能用非Data字段不用纯数据字段”,但没有说明理由。


这是很是迷惑。

回答关注问题邀请回答
收藏

4 个回答

  • brave
    brave
    2022-06-11

    本质上两种都指的是:不会显示在视图层上的数据,也就是不会参与页面/组件渲染(即使你通过setData改变值也不会应用到视图层),只是在逻辑层内改变和调用。

    纯数据字段定义在data对象中,而非data字段你可以类似下面定义:

    // ①
    Page({
      pageData: {
        test: true // 获取this.pageData.test
      },
      data: {}
    })
    // ②
    let pageData = {}
    Page({
      data: {},
      func() {
        pageData.test = true
        console.log(pageData.test)
      }
    })
    
    2022-06-11
    有用 3
    回复 1
    • 三毛
      三毛
      2022-06-11
      这么说,只是定义的地方不一样,应用上没有什么区别了?
      2022-06-11
      1
      回复
  • 胜利之日
    胜利之日
    2023-12-07

    1.非data字段无法被observers侦听,observers只能侦听properties和data下的属性。

    2.在Component自定义组件里也无法在一开始绑定到Component属性上,只能在attached里手动设置,像this.myCustomData = {a: 1},因为除了原生的属性,其他的会被忽略。

    2023-12-07
    有用
    回复
  • 平安喜乐
    平安喜乐
    2023-06-14

    我理解 纯数据字段既能声明在data里,也能通过pureDataPattern把properties上的字段改成纯数据字段。如果官方有说“能用非Data字段不用纯数据字段”,可以这样理解,存数据字段建议用在properties字段上,其他情况用非Data字段

    2023-06-14
    有用
    回复
  • Listen
    Listen
    2022-06-11

    简单点:wxml用不到到的变量不要定义到 Page({data: {}})里边



    2022-06-11
    有用
    回复 1
    • 三毛
      三毛
      2022-06-11
      没认真看题 :)
      2022-06-11
      1
      回复
登录 后发表内容