路由簡單傳參

博客介绍了Vue路由传参相关内容,包括查询字符串传参,即在router - link的to后加参数,后台用$route.query获取;还提到params传参需要修改路由规则,并给出了路由传参案例。

2019/07/13 15:01
查詢字符串
在router-link 的to后加?dcm=22
後臺用:$route.query.dcm=22;

params 傳參需要修改路由規則

在这里插入图片描述
路由传参案例:

<html>
	<head>
		<link rel="stylesheet" href="../../lib/animate.css">
		<style>
			.right{
				border: 1px solid #e6e6e6;
			}
			.my{
				color:red;
			}
		</style>
	</head>
	<body>	
		<div id="app">
			<div class="left">
				<router-link to="/one?i=1">one</router-link>
				<router-link to="/two/1/2">two</router-link>
			</div>
			<div class="right">
				<transition enter-active-class="animated bounceIn" leave-active-class="animated bounceOut" mode='out-in'>
					<router-view ></router-view>
				</transition>
			</div>
		</div>
		
	</body>
	<script src="../../lib/vue-2.4.0.js"></script>
	<script src="../../lib/vue-router-3.0.1.js"></script>
	<script>
		
		var one={
			template:`<h2>one</h2>`
		}
		var two={
			template:`<h2>two</h2>`
		}
		const router=new VueRouter({//只能定义一个地址
			routes:[
				{path:'/one',component:one},
				{path:'/two/:id/:name',component:two},
				{path:"/",redirect:'/one'}
			],
			linkActiveClass:'my'
		})
		var vue=new Vue({
			el:"#app",
			
			router:router,
		})

	</script>
</html>
<think> 首先,用户的问题是:“我想查找Vue2中路由跳转传参并接收的方法,请问Vue2路由跳转传参并接收的实现方法”。我需要基于提供的引用内容来回答。 提供的引用内容: - 引用[1]: 提到了Vue中实现路由跳转传参的4种方式,包括使用vue-router构造函数。 - 引用[2]: 详细描述了Vue路由跳转传参的两种方式:name和params,以及path和query。给出了代码示例。 - 引用[3]: 讨论了Vue3的路由跳转传参,但用户可以指定Vue2,所以我需要适配。 - 引用[4]: 解释了Vue中query和params传递参数的区别,并给出了路由配置示例。 用户指定了Vue2,所以我应该专注于引用中关于Vue2的部分。引用[2]和[4]似乎更相关,因为引用[3]是关于Vue3的。 关键点: - Vue2中路由跳转传参主要有两种方式:声明式(使用router-link)和编程式(使用this.$router.push/replace等)。 - 传参方式:使用query参数或params参数。 - query参数:在URL中以?key=value形式出现,适用于通过path跳转。 - params参数:在路由路径中定义,如path: '/page/:id',适用于通过name跳转。 从引用[2]: - 使用path和query:跳转时传递参数在URL中可见。 - 使用name和params:参数在路径中定义,接收时需要通过this.$route.params获取。 接收参数: - 在目标组件中,可以通过this.$route.query(对于query参数)或this.$route.params(对于params参数)访问。 引用[4]也强调了这一点,并给出了路由配置示例。 结构我的回答: 1. **介绍**:简要说明Vue2中路由传参的基本概念。 2. **路由跳转传参方法**: - **编程式导航**:使用this.$router.push/replace。 - 使用path和query。 - 使用name和params。 - **声明式导航**:使用router-link组件。 - 类似方式。 3. **接收参数**:在目标组件中如何访问参数。 4. **注意事项**:比如params参数需要在路由配置中定义。 5. **相关代码示例**:提供简单的代码片段。 6. **相关问题**:按照系统指令生成相关问题。 系统级指令: - 所有行内数学表达式使用$...$格式(但这里可能不涉及数学公式)。 - 独立公式使用$$...$$并单独成段(可能不适用)。 - LaTeX语法正确(确保代码块格式正确)。 - 使用中文回答。 - 生成相关问题。 - 回答中引用的段落末尾自然地添加引用标识,例如[^1]。 相关问题生成: - 基于主题:"Vue2路由跳转传参并接收的实现方法" - 可能的子问题: 1. query参数和params参数有什么区别? 2. 如何在Vue2中动态路由传参? 3. 如何处理页面刷新后参数丢失的问题? 4. Vue2和Vue3在路由传参上有什么差异? 回答结构: - **回答用户问题**:清晰、逐步解释。 - **代码示例**:使用代码块。 - **相关问题**:在最后列出。 确保内容可靠: - 基于提供的引用,尤其是[2]和[4],因为它们针对Vue2。 - 如果在引用中有冲突或不足,优先参考用户提供的引用。 现在,草拟回答: - 开头:总结方法。 - 方法部分: - 编程式导航: - path + query - name + params - 声明式导航:类似 - 接收参数:this.$route.query 或 this.$route.params - 注意事项:params参数必须在路由配置中定义占位符。 - 代码示例:简化引用中的代码。 - 引用标识:在相关部分末尾添加[^2]、[^4]等。 - 结尾:相关问题。 </think> ### Vue2中路由跳转传参并接收的实现方法 在Vue2项目中,使用`vue-router`实现路由跳转传参主要有两种方式:**编程式导航**(通过JavaScript函数)和**声明式导航**(通过`<router-link>`组件)。传参方法分为`query`参数(URL可见,键值对形式)和`params`参数(路径占位符定义,URL隐藏)。以下是详细实现步骤和示例: #### 1. **路由跳转传参方法** - **编程式导航**(使用`this.$router.push`或`this.$router.replace`): - **方法1: 使用`path`和`query`传参** 参数以`?key=value`形式附加在URL后,适用于无需路由配置的场景。 示例代码: ```javascript // 跳转时传递参数 this.$router.push({ path: '/pageA', // 目标路由路径 query: { id: 100, size: 5 } // 键值对参数 }); ``` 接收参数:在目标组件中,通过`this.$route.query`获取[^2][^4]。 - **方法2: 使用`name`和`params`传参** 参数通过路径占位符传递(需提前在路由配置中定义),URL中不显示参数值。 示例代码: ```javascript // 跳转时传递参数 this.$router.push({ name: 'pageB', // 目标路由名称 params: { id: 100 } // 参数对象 }); ``` **注意**:路由文件中需定义占位符,例如`path: '/pageB/:id'`[^2][^4]。 - **声明式导航**(使用`<router-link>`组件): - 语法类似编程式导航,直接在模板中实现。 ```html <!-- path + query 传参 --> <router-link :to="{ path: '/pageA', query: { id: 100 } }">跳转</router-link> <!-- name + params 传参 --> <router-link :to="{ name: 'pageB', params: { id: 100 } }">跳转</router-link> ``` 接收参数方式与编程式导航相同[^2][^4]。 #### 2. **接收参数的方法** 在目标组件中,通过`this.$route`对象访问参数: - **接收`query`参数**:使用`this.$route.query`,返回一个对象(如`{ id: '100', size: '5' }`)。 - **接收`params`参数**:使用`this.$route.params`,返回一个对象(如`{ id: '100' }`)。 - 示例代码: ```javascript export default { mounted() { // 接收query参数 const queryParams = this.$route.query; console.log(queryParams.id); // 输出: 100 // 接收params参数 const paramsParams = this.$route.params; console.log(paramsParams.id); // 输出: 100 } }; ``` #### 3. **关键注意事项** - **路由配置**:`params`传参需在路由文件中定义路径占位符(如`path: '/user/:id'`);否则参数会丢失[^4]。 - **参数类型**:`query`参数适用于任意键值对数据(如分页参数),`params`参数适用于路径变量(如用户ID)[^2][^4]。 - **刷新问题**:`params`参数在页面刷新后可能丢失(除非使用History模式或持久化存储),而`query`参数保留在URL中[^1]。 - **Vue2 vs Vue3**:Vue2使用`this.$router`和`this.$route`,Vue3使用`useRouter()`和`useRoute()`钩子,但核心传参逻辑类似[^3]。 通过以上方法,您可以在Vue2项目中灵活实现路由跳转传参和接收。实际开发中,推荐根据数据敏感性选择`query`或`params`方式[^1][^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

东哥aigc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值