百度小程序开发中如何检测数据?
1、不管是对于对象还是基本类型,在小程序开发中,都只能通过this.setData()来改变,这样我们只需检测data里面的key值的变化,而不用检测key值里面的key。测试代码如图,自己敲一敲。
2、如果我们需要实现watch和computed方法,就要做一些小小的变动了。我们需要使得,当test变化时,test1、test2、test3也随之变化。
watch 方法相对简单,首先我们定义一个函数来检测变化:
3、然后我们需要遍历watch函数传入的对象,给每个键调用该方法。代码如图:
这里有参数是fn,即上面watch方法里test的值,这里把该方法包一层,绑定 context。
4、接着来看computed,这个稍微复杂,因为我们无法得知 computed 里依赖的是data里面的哪个变量,因此只能遍历 data 里的每一个变量。
这段代码的意义是,第一步,给data里的每个属性调用defineReactive方法。然后,分别计算computed里面每个属性第一次的值,也就是上例中的 test2、test3。
5、这里分别调用 test2 和 test3 的值,将返回值与对应的 key 值组合成一个对象,然后再调用 setData() ,这样就会第一次计算这两个值,这里使用了 reduce 方法。test2 和 test3 都是依赖 test 的,这样必须在 test 改变的时候在其的 setter 函数中调用 test2 和 test3 中对应的函数,并通过 setData 来设置这两个变量。
声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
阅读量:90
阅读量:73
阅读量:71
阅读量:85
阅读量:50