本文介绍: 在移动端中,数据列表中某项数据点击编辑,进入下一个页面编辑数据,保存后回退到数据列表页,此时需要刷新列表数据,否则显示的列表数据还是旧的。这种场景感觉很多地方都有出现,是需要详细说说方法,也就是uniapp中返回后刷新页面数据。本人每篇文章都是一字一句码出来,希望大佬们多提提意见。创作不易,给我打打气,加加油☕。
一、前言
在移动端中,数据列表中某项数据点击编辑,进入下一个页面编辑数据,保存后回退到数据列表页,此时需要刷新列表数据,否则显示的列表数据还是旧的。这种场景感觉很多地方都有出现,是需要详细说说方法,也就是uniapp
中uni.navigateBack
返回后刷新页面数据。
1.1、uni.navigateBack
二、方法
2.1、父页面设置钩子函数onBackPress
export default {
onBackPress(options) {
this.refreshData();
},
methods:{
refreshData: function() {
//加载数据
}
}
}
2.2、uni.$emit
和uni.$on
监听通知数据变更
2.2.1、子页面
子页面在需要返回上一页面的地方写入uni.navigateBack
,然后在success
回调中uni.$emit
发送数据更新通知
uni.navigateBack({
delta: 1, // 返回层数,2则上上页
success() {
uni.$emit('update',{msg:'页面更新'})
}
})
2.2.2、父页面
父页面在初始化时uni.$on
监听数据更新,在回调函数中处理数据。在页面销毁时移除监听
export default {
mounted() {
uni.$on('update', function(data) {
//触发更新后
})
},
//为了优化代码,可以加上移除事件,避免重复监听事件
onUnload() {
// 移除监听事件
uni.$off('update');
}
}
2.3、onShow
钩子函数处理数据
2.3.1、子页面
let pages = getCurrentPages();
let prevPage = pages[pages.length - 2]; // 上一个页面
// 直接调用上一个页面的setData()方法,把数据存到上一个页面中去
prevPage.setData({
isRefresh: 1
})
// 再根据需求,确定返回上一页面
uni.navigateBack({
delta: 1
})
2.3.2、父页面
export default{
data() {
return{
isRefresh:false
}
},
onShow() {
// 如果是提交状态返回isRefresh=1,才刷新页面,从详情过来无需刷新
let pages = getCurrentPages();
let currPage = pages[pages.length - 1];
if(currPage.__data__.isRefresh) {
// 重新获取数据
this.getData(true)//获取列表数据
// 每一次需要清除,否则会参数会缓存
currPage.__data__.isRefresh=false
}
}
}
2.4、注意
如果出现数据没有更新,可以使用$forceUpdate
或者先置空数据再赋值数据,大概率是数据没有响应
二、最后
本人每篇文章都是一字一句码出来,希望大佬们多提提意见。顺手来个三连击,点赞👍收藏💖关注✨。创作不易,给我打打气,加加油☕
原文地址:https://blog.csdn.net/u012804440/article/details/134649210
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_49627.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。