
脏检查因一个原因而被称为脏。它主动检查而不是直接监听属性变化。我们把这个检查称为摘要周期(digest)。
三大主流框架都使用到了脏检查机制,Angular大范围使用,而Vue和React在diff算法中使用了脏检查
脏检查范围过大、频率太过频繁
通过 OnPush 可以跳过指定节点及其子节点的脏检查,提高性能
通过 ngOnChanges 可以捕获来自父元素的输入内容变化
通过 setData 驱动视图层的WebView更新
大家都知道,针对一款app上面都是展示信息的,那么在小程序中,页面上信息的展示是如何的,接下来进行详细探索:
在微信小程序中,编写页面布局是在wxml文件中进行的,则在wxml文件中,使用<view></view>标签进行内容的包裹,类似html中的<div>,现在进行一个需求的编写,在页面上编写布局,并将js结尾文件中的处理数据进行展示到页面上;
indexwml
indexjs
编译项目,则页面展示如下:
从上面结果可以知道在wxml文件中使用{{}}可以将js文件中指定的内容展示在页面上,现在我们进行动态的展示数据,不需要展示起在page-data中固定的内容,修改js文件内容:
编译项目,显示结果如图:
由此可知,在js中动态的设置内容并将其更新到wml上,则使用 thissetData(),且修改的内容格式符合key:value。
就小程序页面数据展示就分析到这里,希望各位看官们有所收获,有什么错误的地方还望指出!!
一般来说,小程序下拉加载数据,用合并数组的方式(concat)然后再setData新的数组,这种方式只是试用数据量小的时候,为什么这么说,因为小程序的setData有一个限制,每次setData数据不能超过1024kb,大家可以想象一下,如果用concat合并产生新数组,并保存新数组为下一次加载的原数组,那么数量大的时候肯定会出现数据的大小超过1024KB的限制,那么这种问题该怎么解决呢,说解决方法的时候先了解下小程序渲染的过程
这可以这样理解小程序已经把数据和视图绑定了起来,众所周知vue是数据双向绑定的,数据改变,视图也会相应的改变,而上面的那段话是不是可以理解为小程序也是双向绑定的,
在vue里修改数据可以写 thisa = b
小程序里修改数据需要 thissetData({"key":value})
那我们是不是可以这样理解在小程序修改数据的时候只是调用setData方法修改了定义中的变量,
跟vue中thisa = b 是一样的性质而只是写法不一样
明白了,这一点,说解决方法。。。
上面说了数据量大的时候不能用concat的原因,那我们这时候该怎么解决,只是我们可以想,既然数据和视图绑定在一起了,我们是不是可以用一个二维数组解决这个问题
大概思路是这样的
1,在data里定义一个空数组,
2,获取下拉数据
3,把获取的数组,thissetData上面定义的数组
例如thissetData({
[`arr[${b}]`]:resdata
})
这样就避免了setData数据过大而不报错的问题。
这时候数组发生了改变视图也会相应的改变,不过这样可能会出现一个问题,如果加载数据过多的时候视图会出现渲染层失败,
以上就是关于Angular、Vue、React、小程序对比全部的内容,包括:Angular、Vue、React、小程序对比、微信小程序入门(四):页面数据展示、小程序 下拉加载数据量大解决方法等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)