【发布时间】:2020-10-30 13:01:06
【问题描述】:
我正在开发一个 vue.js 应用程序。我正在尝试将参数从一个组件重定向到另一个组件,如下所示:
this.$router.push({
path: '/my-path',
query: {
anArray: [...]
}
});
加载 my-path 中的组件后,我可以像这样检索参数:
const theArray = this.$route.query.anArray;
问题是我一刷新页面,参数就没有了。当我打开 Chrome DevTools 并在从 $route.query 检索数组的位置放置一个断点时,我看到了:
0: "[object Object]"
1: "[object Object]"
2: "[object Object]"
很明显,它是从以下网址获取的:
http://localhost:8080/my-path?anArray=%5Bobject%20Object%5D&anArray=%5Bobject%20Object%5D&anArray=%5Bobject%20Object%5D
似乎没有意识到 url 中的“对象”术语只是实际对象的编码,它们在 $route.query 第一次加载时就可以使用。
是否有另一种方法可以使用 $router.push() 将参数传递给组件,以使参数在刷新后仍保留在页面上?
我可以试试:
this.$router.push('/my-path?anArray=[...]');
...但我的目标是对用户隐藏参数(所以不要在 url 中显示它们)。这是我正在寻找另一种传递参数的方法的另一个原因(它甚至不隐藏它们)。
我也试过了:
this.$router.push({
path: '/my-path',
params: {
anArray: [...]
}
});
...但这使得组件中的参数不可用(我想知道这是否与我们的全局路由器有关?)。
谢谢。
【问题讨论】:
-
为什么不使用 localStorage 来存储查询参数?...刷新后检索它们
-
params仅对命名路由有效,对路径无效。如果你用名字初始化你的/my-path路由,你可以通过params。 -
初始化我的/my-path是什么意思?
-
我的意思是配置你的路线。
/my-path的路由配置应该有一个name属性,你可以在推送路由时使用它。见router.vuejs.org/guide/essentials/named-routes.html -
啊,所以我试过了,它有效。我现在可以访问 this.$route.prams。但是,它并不能解决更大的问题。刷新页面时,我仍然会丢失参数。你会建议 nachodd 使用 localStorage 的解决方案吗?
标签: vue.js parameters refresh router