如果data中有对象或者数组,该如何setData?

比如:

Page({

    data: {

        m_obj: {'a': {'num': 0}, ...},

    }

    click: function() {

        let obj = this.data.m_obj;   // A

/***modify obj***/               // B

        this.setData({

             m_obj: obj,                   // C

        });

    }

})

我想整体替换obj变量,上述代码是否有问题? 文档中说不能直接操作data中的变量,否则会造成数据不一致,那么上述代码中的A和B是否就会造成代码不一致?如果是的话,我该如何修改整个对象呢(整体替换而不是对每个属性set一次)?


展开全部
收起
2回答
提交回答
  • 至过去的我

    2044人对此回答表示赞同

    我是未来的你,你现在是不是在年找寻小程序答案。你不要感觉诧异,给你来信原因,就是让你不在后悔。今天去学习如何推广小程序,相信......点击查看更多>
    发布于
  • 张小千

    20人对此回答表示赞同

    给this.data赋值之后,立即有setData是不会有问题的

    展开
    20
    3回复
    发布于 6年前

    评论(3)

    收起评论

    • Burian 2019-02-02 10:30

      好的,多谢

      回复
    • 陈港生 2019-02-04 09:41

      没事,官方的一些demo,他也有直接给this.data赋值,然后立马就setData了,不会有问题的

      回复
    • Grady陈三岁 2019-02-06 17:48

      obj是一个引用,对obj的修改实际上也是对data中数据的修改,所以我担心对obj做了修改,会不会算是违反了官方文档中“不能直接操作data数据”的规则,从而造成数据不一致。目前实际代码看是没有问题的,但是心虚啊。。。

      回复
  • 念欲似毒

    11人对此回答表示赞同

    官方说的应该是不直接修改this.data,用setData应该没啥问题吧

    展开
    11
    2回复
    发布于 6年前

    评论(2)

    收起评论

    • 泯灭人性 2019-02-03 18:47

      this.data=a;不能这样用,想修改data中的值要用setData,官方应该说的是这个意思吧

      回复
    • Bryson 2019-02-05 22:23

      代码A处,obj是一个引用,所以对它赋值应该跟对this.data赋值是一样的,这也是我疑惑的地方

      回复
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
咨询热线

13312967497

扫码添加业务即可随时咨询 还可领取小程序推广攻略

业务咨询: 13312967497
扫码咨询

扫码咨询套餐

回到顶部