微信小程序如何解决后台返回大量多余数据的问题
本篇文章给大家带来的内容是关于微信小程序如何解决后台返回大量多余数据的问题,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 台接口返回一个数组,数组里面N多对象,每个对象里面几十上百条数据,最好玩的是,我只需要每个对象里面的某两个数据、、、、 类似这种: datas:[ { id:1000,name: "帅哥", title: '...',b: '...',d: 0,f:0,.... },{ id:1001,name: "美女", title: '...',... ] 其实我只要id和name,找后台解决、、、算了吧,奈何天生就是个儒生,温文尔雅,打架是打不赢的,要是能打赢的就直接打吧,打完让他们改! 答案是:有!一般情况下我们是在wxml中循环data,然后取出item.id和item.name,其他数据看起来和我们无关,但是查看官方文档setData相关信息的时候有下面这一段话 小程序的视图层目前使用 WebView 作为渲染载体,而逻辑层是由独立的 JavascriptCore 作为运行环境。在架构上,WebView 和 JavascriptCore 都是独立的模块,并不具备数据直接共享的通道。当前,视图层和逻辑层的数据传输,实际上通过两边提供的 evaluateJavascript 所实现。即用户传输的数据,需要将其转换为字符串形式传递,同时把转换后的数据内容拼接成一份 JS 脚本,再通过执行 JS 脚本的形式传递到两边独立环境。 [mw_shl_code=applescript,true] var tempData = [] for(var i = 0; i < datas.length; i++) { var tempObj = {} tempObj.id = datas[i].id tempObj.name = datas[i].name tempData.push(tempObj) } console.log(tempData) [/mw_shl_code] 或者使用高阶函数map(): let tempDatas = datas.map(function(data){ return { id: data.id,name: data.name } }) console.log(tempDatas) 此时我们再使用setData({})就能提高渲染效率了 同时再分享两个setData技巧 1、有一个Object如下 obj:{a:"a",b:"b",c:"c"}, 此时已经渲染到页面了,然后我们修改了obj,此时可以选择: 1)平时的做法 let obj = this.data.objobj.b = "我是后来修改的"this.setData({ obj: obj}) 2)但是更优化的做法是 this.setData({ 'obj.b': "我是后来修改的"}) 不仅省了两行代码,同时还提高页面渲染效率2、其实和1差不多,就是Object变成数组Array当我们要给数组的其中一个数据进行修改时,我们可以参照上面的方法 this.setData({ 'array[1]': "我是后来修改的"}) 当我们要给数组的多个数据进行修改时,我们会写一个循环,然后修改array,此时是无法识别的,要写成如下形式 for(var i = 0;i < 5;i++) { this.setData({ [`array[${i}]`]:"我是后来修改的" }) } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |