微信小程序中我们经常用setData来将数据从逻辑层发送到视图层(异步),同时改变对应的 this.data
的值(同步)。
正常场景下,首次请求接口>接口返回数据>setData数据>视图渲染
一般界面上都会有刷新按钮、或者下拉刷新,当点击刷新按钮,只想更新部分数据怎么办,这时就要用到局部刷新了。下面举例来具体实现:
初始数据如下
Page({ /** * 页面的初始数据 */ data: { arr:[ { id:1, name:"张三", age:13 }, { id:2, name:"李四", age:14 } ] }, })
通过请求接口,拿到返回数据,假设接口的返回数据中 “张三”的 age变更为23,“李四”的 age变更为24
getUser() { let that = this; wx.request({ url: 'test.php', //仅为示例,并非真实的接口地址 data: { x: '', y: '' }, header: { 'content-type': 'application/json' // 默认值 }, success(res) { console.log(res.data) /* res.data = [ { id:1, name:"张三", age:13 }, { id:2, name:"李四", age:14 } ] */ for (let i = 0, len = res.data.length; i < len; i++) { let age = 'arr[' + i + '].age';//arr跟this.data.arr名称保持一致 that.setData({ [age]: res.data[i].age//左边的age要用[] 包裹 }) } } }) }
这样就实现了局部刷新页面数据