this.$route.push怎么传数组
时间: 2023-06-30 12:17:32 浏览: 91
你可以将数组作为参数传递给 `this.$route.push` 方法,例如:
```
this.$route.push({
path: '/example-route',
query: {
myArray: JSON.stringify([1, 2, 3])
}
})
```
在上面的示例中,`myArray` 是一个数组,通过将其使用 `JSON.stringify` 方法转换为字符串,然后作为查询参数传递给 `push` 方法。在目标路由组件中,你可以使用 `JSON.parse` 方法将字符串转换回数组,例如:
```
const myArray = JSON.parse(this.$route.query.myArray)
```
这将会将 `myArray` 转换为 `[1, 2, 3]`。
相关问题
vue this.$router.push 传数组对象
在Vue中使用this.$router.push方法传递数组对象,可以使用以下方式:
1. 使用params传递参数:
在定义事件中,使用this.$router.push方法传递参数对象,在目标组件中使用this.$route.params接收参数。
例如:this.$router.push({name: 'Home', params: {user: 'david', items: [1, 2, 3}});
在目标组件的created或mounted生命周期钩子中,使用this.$route.params接收参数。
例如:const items = this.$route.params.items;
2. 使用query传递参数:
在定义事件中,使用this.$router.push方法传递参数对象,在目标组件中使用this.$route.query接收参数。
例如:this.$router.push({path: '/home', query: {user: 'david', items: [1, 2, 3}});
在目标组件的created或mounted生命周期钩子中,使用this.$route.query接收参数。
例如:const items = this.$route.query.items;
需要注意的是,通过query方式传递的数组对象会在地址栏中被强制转换成字符串,刷新页面后无法获取到正确的数组对象值。因此,推荐使用params方式传递数组对象。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [vue中this.$router.push()路由传值和获取的两种常见方法](https://blog.csdn.net/Vivien_CC/article/details/126880417)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]
fetchData() { this.axios .get("/api/getQuestionList", { params: { questionnaireId: this.$route.params.id, }, }) .then((res) => { const tempList = res.data["questionList"]; const resList = []; for (const t of tempList) { t["date"] = new Date(t["date"]); resList.push(t); } this.questionList = resList; if (this.$store.state.a == 0) { this.$message({ message: "问卷已读取", duration: 1000 }); console.log(this.$store.state.a) } else { this.$store.commit('set0') } }) .catch(() => { this.$message({ message: "error!问卷读取失败!", duration: 1000 }); }); this.axios .get("/api/getQuestionnaireOutline", { params: { questionnaireId: this.$route.params.id, }, }) .then((res) => { const temp = { questionnaireDescription: res.data["questionnaire"]["description"], questionnaireTitle: res.data["questionnaire"]["title"], questionnaireId: res.data["questionnaire"]["questionnaireId"], endTime: res.data["questionnaire"]["endTime"], }; this.questionnaire = temp; this.value2 = this.questionnaire.endTime; }) .catch(() => { this.$message({ message: "error!问卷概况读取失败!", duration: 1000, }); }); },解释这段代码
这段代码是一个名为fetchData的方法。它使用axios库发送两个HTTP GET请求来获取问卷数据。
第一个请求是发送到"/api/getQuestionList"端点,使用params参数指定了问卷的ID。服务器将返回一个包含问题列表的响应。代码中首先将响应数据中的questionList字段赋给tempList变量,然后使用循环遍历tempList中的每个元素,并为每个元素的date属性创建一个新的Date对象,并将修改后的元素推入resList数组中。最后,将resList赋值给questionList变量。
第二个请求是发送到"/api/getQuestionnaireOutline"端点,同样使用params参数指定了问卷的ID。服务器将返回一个包含问卷概况信息的响应。代码中将响应数据中的问卷描述、标题、ID和结束时间等字段提取出来,创建一个包含这些信息的对象temp,并将temp赋给questionnaire变量。同时,将questionnaire.endTime赋值给value2变量。
如果请求成功,会根据this.$store.state.a的值进行条件判断。如果为0,则显示一条消息提示问卷已读取,并在控制台打印this.$store.state.a的值;否则,调用this.$store.commit('set0')方法。
如果请求失败,会显示一条错误消息提示问卷读取失败。
总结来说,这段代码通过两个HTTP GET请求获取了问卷的问题列表和概况信息,并根据请求结果进行相应的处理和提示。
阅读全文