在项目中我们需要删除某条数据时无法及时更新数据
- 需求:点击某条数据进行删除,没有及时刷新页面数据,(举个栗子)😀
- 点击当前数据项下的目录
![在这里插入图片描述](https://img-blog.csdnimg.cn/cb37a9c40bf2432b8f248d5e6f94471c.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0h1YW5nX21pbGs=,size_16,color_FFFFFF,t_70)
- 点击删除,执行删除操作
![在这里插入图片描述](https://img-blog.csdnimg.cn/d4cf0b8521c549159a607d51d462b1c6.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0h1YW5nX21pbGs=,size_16,color_FFFFFF,t_70)
- 但是按下后,请求也发送过去了,服务器端数据已经将这条数据删除,但是页面没有局部刷新.
解决方法:
- 经过查询和思考(抓头发),发现了获取该表列表的请求方法写在了 onLoad 里面
onLoad: function (options) {
this.getFamilyInfo()
},
- 在请求删除的方法中调用 this.onReady()
if (code == 200) {
wx.showToast({
title: '该成员已删除',
icon: 'success',
duration: 1500,
})
this.setData({
memberInfo: {}
})
this.onReady()
}
- 修改调用的钩子函数后:
onReady: function () {
this.getFamilyInfo()
},
- 补充:
onLoad & onReady 区别
onLoad
- 只触发一次,页面加载时触发( dom 未渲染完成),但从二级页面返回时不会触发 (使用 navigateBack() 回跳是可以重新执行 onLoad ),以及 tabBar 首次会执行 onload,第二次进入 onload 不会执行。但我们在这里进行参数传递
onReady
- 页面首次渲染完成时触发(这时 dom 已经渲染完成)。一个页面只会调用一次,代表页面已经渲染完毕,可以进行视图层交互等。
- 界面内容进行设置的 API ,比如 wx.hideNavigationBarLoading,可以在 onReady 之后进行。
- 这里是微信官方释义,加深自身理解