gib*_*b65 3 parameters router refresh vue.js
我正在开发 vue.js 应用程序。我正在尝试将重定向中的参数从一个组件传递到另一个组件,如下所示:
this.$router.push({
path: '/my-path',
query: {
anArray: [...]
}
});
Run Code Online (Sandbox Code Playgroud)
一旦 my-path 中的组件加载,我就可以检索如下参数:
const theArray = this.$route.query.anArray;
Run Code Online (Sandbox Code Playgroud)
问题是我一刷新页面,参数就消失了。当我打开 Chrome DevTools 并在从 $route.query 检索数组的位置放置一个断点时,我看到了以下内容:
0: "[object Object]"
1: "[object Object]"
2: "[object Object]"
Run Code Online (Sandbox Code Playgroud)
很明显,它是从以下网址获取的:
http://localhost:8080/my-path?anArray=%5Bobject%20Object%5D&anArray=%5Bobject%20Object%5D&anArray=%5Bobject%20Object%5D
Run Code Online (Sandbox Code Playgroud)
它似乎没有意识到 url 中的“对象”术语只是实际对象的编码,这些对象可以在第一次加载时从 $route.query 中获得。
是否有另一种方法可以使用 $router.push() 将参数传递给组件,以便即使刷新后参数仍保留在页面上?
我可以尝试:
this.$router.push('/my-path?anArray=[...]');
Run Code Online (Sandbox Code Playgroud)
...但我的目标是向用户隐藏参数(因此不要在网址中显示它们)。这是我寻找传递参数的替代方法的另一个原因(它甚至不隐藏它们)。
我也尝试过:
this.$router.push({
path: '/my-path',
params: {
anArray: [...]
}
});
Run Code Online (Sandbox Code Playgroud)
...但这使得参数在组件中不可用(我想知道这是否与我们的全局路由器有关,该路由器将“/my-path”路由到 MyPath 组件而不指定参数;它是否会清除参数?)。
谢谢。
小智 8
如果要对用户隐藏参数,则不得使用查询。相反,您应该使用参数。这里我给大家举个例子:
//routes.js
path: '/:data',
name: 'Home',
component: () => import('pages/YourPage.vue')
//Passing parameters
this.$router.push({
name: 'Home',
params: { data: yourData}
});
//Receiving parameters in Home component
created() {
console.log('Params: ', this.$route.params);
}
Run Code Online (Sandbox Code Playgroud)
我希望这有用
| 归档时间: |
|
| 查看次数: |
18730 次 |
| 最近记录: |