vue3返回上一页带参数
时间: 2023-12-29 14:25:35 浏览: 742
在Vue 3中返回上一页并传递参数可以通过以下步骤实现:
1. 在跳转之前,将上个页面的路径保存在`fromPath`变量中。可以使用路由守卫的`beforeRouteEnter`钩子来实现:
```javascript
data() {
return {
fromPath: '', // 上个页面的路径Name
}
},
beforeRouteEnter(to, from, next) {
next((vm) => {
vm.fromPath = from.name // 将上个页面的路径保存在fromPath变量中
})
},
```
2. 在返回上一页的点击事件中,使用`this.$router.push`方法跳转到上个页面,并传递参数:
```javascript
methods: {
back() {
this.$router.push({
name: this.fromPath, // 跳转到上个页面
params: {
page: this.$route.params.page, // 传递参数
},
})
},
},
```
这样,当点击返回按钮时,就会返回到上个页面,并且传递了参数。
相关问题
vue返回上一页带参数
### Vue.js 中实现返回上一页并携带参数
在 Vue.js 应用程序中,可以利用 `vue-router` 提供的导航功能来实现返回上一页的同时传递参数。这通常涉及到使用编程式的导航以及存储临时状态。
#### 使用 Vuex 存储参数
为了确保参数可以在不同页面之间共享而不丢失,在离开当前页之前可将所需参数保存到 Vuex store 中[^3]:
```javascript
// 在准备跳转前保存参数至 Vuex Store
this.$store.commit('setReturnParams', params);
```
随后,在目标页面加载完成后读取这些参数,并执行必要的操作或将其作为查询字符串附加给 URL。
#### 编程式导航与历史记录管理
借助于 vue-router 的实例方法 `$router.go(-1)` 可以方便地让浏览器回退至上一浏览位置;而要附带额外的信息,则需考虑采用如下策略之一:
- **URL 查询参数**:修改即将访问的历史条目中的 query 属性;
```javascript
const queryParams = { key: value };
this.$router.push({ path: '/', query: Object.assign({}, this.$route.query, queryParams)});
```
- **本地存储(Local Storage)** 或者 SessionStorage :对于不想暴露在地址栏里的敏感信息来说是个不错的选择。
```javascript
sessionStorage.setItem('returnData', JSON.stringify(params));
this.$router.back();
```
一旦回到之前的页面,就可以从相应的源恢复数据了。
#### 完整示例代码展示
下面给出一段完整的 JavaScript (ES6+) 示例代码片段,展示了如何结合上述两种方式完成带有参数的页面回溯过程:
```javascript
// main.js 初始化 Vuex 和 Router...
import Vue from 'vue';
import App from './App.vue';
import router from './router'; // 导入路由配置文件
import store from './store'; // 导入 Vuex Store 配置文件
new Vue({
el: '#app',
router,
store,
render: h => h(App),
});
// componentA.vue 发送端组件
<template>
<div class="container">
<!-- ... -->
<button @click="goBackWithParam">Go Back With Param</button>
</div>
</template>
<script>
export default {
name: "ComponentA",
methods:{
goBackWithParam(){
let paramToPass = {'message': 'Hello'};
// 方法一:通过 URL Query 参数传送
this.$router.replace({...this.$route.query,paramToPass});
this.$router.go(-1);
/*
* OR 方法二:通过 Local/Session Storage 传送更私密的数据
*/
/*
sessionStorage.setItem('paramKey','value');
this.$router.back();
*/
}
}
}
</script>
// componentB.vue 接收端组件
<template>
<div class="container">
{{receivedMessage}}
</div>
</template>
<script>
export default {
computed: {
receivedMessage () {
return this.$route.query.message || '';
},
// 如果选择了第二种方案则改为:
/*
receivedMessage() {
return sessionStorage.getItem('paramKey') || '';
}*/
},
watch: {
'$route'(to,from){
console.log(`Navigated to ${to.path} from ${from.path}`);
}
}
}
</script>
```
vue路由返回上一页携带参数
在Vue.js中,如果你想要在路由返回上一页的同时传递参数,可以结合Vuex(状态管理库)或者URL查询参数、路径动态参数来实现。这里提供一种常见的做法:
1. **通过Vuex**:
- 在路由守卫`beforeEach`或`beforeRouterUpdate`中,检查当前要进入的页面是否需要携带某些数据。如果有,更新Vue的store状态。
- 当用户点击返回按钮时,从组件或者路由守卫中读取store的数据,并将其作为参数传回上一页。
```javascript
// 在store中设置数据
actions: {
setBackData({ commit }, data) {
commit('SET_BACK_DATA', data);
}
},
mutations: {
SET_BACK_DATA(state, data) {
state.backData = data;
}
}
// 路由守卫
router.beforeEach((to, from, next) => {
// 如果需要带数据,保存并继续导航
if (/* 判断条件 */) {
this.$store.dispatch('setBackData', { paramKey: 'paramValue' });
} else {
next();
}
})
// 返回上一页时获取并传递参数
onBeforeRouteLeave(to, from, next) {
const backData = this.$store.state.backData; // 如果存在则携带
next(false, { params: { ...backData } }); // false表示不跳转,直接离开
}
```
2. **通过URL参数**:
- 可以在离开当前页面时,将参数添加到URL查询字符串中,然后在返回时读取这些参数。
```javascript
this.$router.push({ query: { returnParam: 'yourValue' } });
// 返回时
const returnParam = this.$route.query.returnParam;
```
3. **通过动态路由参数**:
- 如果返回的是某个特定路由的详情页,你可以存储参数在组件实例或者vuex中,然后在离开该路由时带上。
```javascript
<template>
<button @click="goBack">返回</button>
</template>
<script>
export default {
methods: {
goBack() {
const param = /* 获取参数 */;
this.$router.go(-1, { params: { yourParam: param } });
},
},
};
</script>
```
阅读全文
相关推荐















