【Vue/JS】打开新页面,返回上一页面并刷新数据

本文详细介绍了JavaScript、HTML以及Vue.js中实现页面跳转的各种方法,包括window.open、a标签的target属性、vue-router的多种跳转方式如push、replace以及go、back等。同时,还涵盖了返回上一页的实现方式。无论你是前端新手还是经验丰富的开发者,这篇文章都将帮助你更好地理解和掌握页面跳转的技巧。
ACE-Step

ACE-Step

音乐合成
ACE-Step

ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

跳转页面

js方法: 参考链接

window.open('http://www.baidu.com','_blank');         //新页面打开
window.open('http://www.baidu.com','_self');          //当前页面打开

html标签:

//在a标签中跳转,用target:
<a href="http://www.baidu.com" target="_blank">
<a href="http://www.baidu.com" target="_self">

vue-router方法: 参考链接

1.  //path接跳转路径,query接传递参数 可选,target接打开方式
<router-link :to="{path:'/src/index', query:{id:1,name:'vue'}}" target="_blank">
     <p>前往首页</p>
 </router-link>
2.  //name接跳转路径,params/query接传递参数 可选
//query在地址栏显示参数内容,params不显示
this.$router.push({path: "/detail", query: {id: hello , psw: world }})
this.$router.push({name: "/detail", params: {id: hello , psw: world }})
3.   //区别:push有记录一个history,replace没有
this.$router.replace({name: '/detail', params: {id: hello , psw: world }})

4.    //router.go(n):指定前进/回退的步数。
//n 为正数的时候是前进;负数的时候是后退;0的时候是刷新当前页面。
this.$router.go(1)       
5.  //相当于this.$router.go(1)       
this.$router.forward()         //前进一步
6.   //使用路由对象的resolve方法解析路由,可以得到location、router、href等目标路由的信息。
     //得到href就可以使用window.open开新窗口
const new = this.$router.resolve({name: '/detail', params: {id: hello , psw: world }})
window.open(new.href,'_blank')

返回上一页

js方法 参考链接

//返回一层 -1 ,返回两层 -2
window.history.go(-1);      //返回上一页

window.history.back();      //返回上一页

window.location.go(-1);     //返回上一页并刷新

window.history.back();     //返回上一页并强行刷新
location.reload();              

vue方法: 参考链接

//注释同上
this.$router.go(-1)       

this.$router.back()      //返回上一页

您可能感兴趣的与本文相关的镜像

ACE-Step

ACE-Step

音乐合成
ACE-Step

ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

### 实现 Vue返回刷新页面Vue 应用程序中,可以通过多种方式实现在返回页时刷新页面的功能。以下是几种常见的方式: #### 使用 `beforeRouteLeave` 和 `activated` 对于需要保持状态的组件,可以利用 `<keep-alive>` 组件来缓存视图,通过钩子函数控制页面行为。 ```html <template> <div id="app"> <keep-alive> <router-view v-if="$route.meta.keepAlive"></router-view> </keep-alive> <router-view v-if="!$route.meta.keepAlive"></router-view> </div> </template> <script> export default { name: 'App', } </script> ``` 当离开当前路由时,可以在 `beforeRouteLeave` 钩子里保存些必要的状态,在重新进入该页面时(即激活时),可通过 `activated` 生命周期钩子恢复这些状态或强制刷新数据[^3]。 #### 刷新特定方法而非整个页面 如果目标是在回到前页面时不完全重载而是仅更新某些部分的数据,则可以直接调用相应的方法而不是依赖于全局性的刷新机制。例如,在 B 页面返回 A 页面时想要调用 A 的 `getList()` 函数以获取最新列表信息,可采用如下做法: ```javascript // 假设这是位于A页中的代码片段 methods: { getList() { console.log('Fetching list...'); // 执行获取数据的操作... } } // 当从B跳转回A的时候执行此逻辑 const pages = getCurrentPages(); // 获取到当前打开过的页面栈实例数组 let prevPage = pages[pages.length - 2]; // 取得上页面实例对象 if (prevPage && typeof prevPage.$vm.getList === "function") { prevPage.$vm.getList(); } else { console.error("Failed to call getList on previous page."); } ``` 这种方法适用于 uni-app 或者其他支持多页面架构的应用场景下,能够有效地只刷新所需的部分而不会影响用户体验[^1]。 #### 强制浏览器刷新 另外种简单粗暴的办法就是直接让浏览器刷新整个页面,这通常不是最优解因为会丢失未保存的状态变化以及可能带来性能上的开销。不过有时候为了确保数据是最新的确实有必要这样做。可以通过 JavaScript 来实现这点: ```javascript window.location.reload(true); ``` 这种方式适合那些对实时性要求不高但是又希望得到最准确数据的情况。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值