当前位置: 首页 > news >正文

uniapp中uni.navigateBack返回后刷新页面数据

文章目录

  • 一、前言
    • 1.1、[`uni.navigateBack`](https://uniapp.dcloud.net.cn/api/router.html#navigateback)
  • 二、方法
    • 2.1、父页面设置钩子函数`onBackPress`
    • 2.2、`uni.$emit`和`uni.$on`监听通知数据变更
      • 2.2.1、子页面
      • 2.2.2、父页面
    • 2.3、`onShow`钩子函数处理数据
      • 2.3.1、子页面
      • 2.3.2、父页面
    • 2.4、注意
  • 二、最后

一、前言

在移动端中,数据列表中某项数据点击编辑,进入下一个页面编辑数据,保存后回退到数据列表页,此时需要刷新列表数据,否则显示的列表数据还是旧的。这种场景感觉很多地方都有出现,是需要详细说说方法,也就是uniappuni.navigateBack返回后刷新页面数据。

1.1、uni.navigateBack

二、方法

2.1、父页面设置钩子函数onBackPress

详细文档可点击【跳转】,适用于刷新多处数据

export default {onBackPress(options) {this.refreshData();},methods:{refreshData: function() {//加载数据}}
}

2.2、uni.$emituni.$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、父页面

onShow钩子函数中获取判断条件

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或者先置空数据再赋值数据,大概率是数据没有响应

二、最后

本人每篇文章都是一字一句码出来,希望大佬们多提提意见。顺手来个三连击,点赞👍收藏💖关注✨。创作不易,给我打打气,加加油☕

http://www.lryc.cn/news/247131.html

相关文章:

  • sed文本 免交互
  • 轻巧高效的剃须好工具,DOCO黑刃电动剃须刀上手
  • 第15关 K8s HPA:自动水平伸缩Pod,实现弹性扩展和资源优化
  • 接口测试工具(Jmeter)必学技巧
  • C++面试,说明const和#define的特点和区别
  • aikit 2023 3D与机械臂结合!
  • 模拟退火算法应用——求解TSP问题
  • 【LeetCode】每日一题 2023_11_28 设计前中后队列(数组/链表/双端队列)
  • python基于YOLOv8全系列模型【n/s/m/l/x】开发构建不同参数量级的钢铁产业产品智能自动化检测识别系统
  • 力扣142. 环形链表 II
  • 【设计模式-2.2】创建型——简单工厂和工厂模式
  • 将文件读入C中的字符数组
  • 不小心删除了短信,如何在 Android 上恢复已删除的短信
  • Java电子招投标采购系统源码-适合于招标代理、政府采购、企业采购、等业务的企业
  • springBoot的实现原理;SpringBoot是什么;使用SpringBoot的核心功能;springBoot核心注解以及核心配置文件
  • logback-spring.xml详解
  • 【Python】nn.BCEWithLogitsLoss函数详解
  • 【C++】日期类的实现
  • 带残差连接的ResNet18
  • 【深入解析git和gdb:版本控制与调试利器的终极指南】
  • CGAN原理讲解与源码
  • C#实体类与XML互转以及List和DataTable转XML的使用
  • uniapp的vue3的模版的setup函数内使用uniapp内置方法
  • UI自动化的基本知识
  • python实现C++简易自动压行
  • 京东数据分析(京东大数据采集):2023年线上珍珠市场销售数据采集
  • 亚信科技AntDB数据库与库瀚存储方案完成兼容性互认证
  • 现代C++之万能引用、完美转发、引用折叠
  • ELK日志收集系统-filbeat
  • Python小知识