name声明路由,动态路由,路由参数的3种方式

声明路由,路由传参,动态路由

  • this.$router.push('/goods/detail');
  • this.$router.push({path:'/goods/detail',query:{id:id}});
  • 函数挂载
mounted:function(){
	this.goodsId=this.$route.query.id
},
  • this.$router.push(name:'detail',params:{id:id})
  • this.goodsId=this.$route.params.id
  • this.$router.push('/goods/detail/${id}')
  • this.goodsId=this.$route.params.id

传参方式1:

this.$router.push('/goods/detail/${id}')

this.goodsId=this.$route.params.id

  • goods.vue
<template>
	<ul>
		<li @click="getGdoos(goods.id)" v-for="goods,index in goodsList" :key="index">
			{{goods.name}}
		</li>
	</ul>
</template>

<script>
	export default{
		data:function(){
			return {
				goodsList:[
					{id:1,name:'小明'},
					{id:2,name:'小花'},
					{id:3,name:'小红'}
				]
			}
		},
		methods:{
			getGdoos:function(id)
			{
				// console.log(id)	
				// 详情页跳转是编程式路由,push后面是跳转路径
				//push里面要用反引号,这个id和函数function的id对应
				//这种形式写,后面的路由需要改成动态路由
				this.$router.push(`/goods/detail/${id}`)
			}
		}
	}

</script>

<style>
</style>

  • Detail.vue
<template>
	<ul>
		<li @click="getGdoos(goods.id)" v-for="goods,index in goodsList" :key="index">
			{{goods.name}}
		</li>
	</ul>
</template>

<script>
	export default{
		data:function(){
			return {
				goodsList:[
					{id:1,name:'小明'},
					{id:2,name:'小花'},
					{id:3,name:'小红'}
				]
			}
		},
		methods:{
			getGdoos:function(id)
			{
				// console.log(id)	
				// 详情页跳转是编程式路由,push后面是跳转路径
				//push里面要用反引号,这个id和函数function的id对应
				//这种形式写,后面的路由需要改成动态路由
				this.$router.push(`/goods/detail/${id}`)
			}
		}
	}

</script>

<style>
</style>

  • index.js
{
		// path:'/goods/detail',
		// 动态路由,detail后面的参数会议id的形式传过来
		path:'/goods/detail/:id',
		component:Detail,
	},

传参方式2 query方式 ,类似get传参, 参数在url都能看到

this.$router.push({path:'/goods/detail',query:{id:id}})

this.$route.query.id

  • index.js
{
		path:'/goods/detail', //query的方式就不能是动态路由了
		// 动态路由,detail后面的参数会议id的形式传过来
		// path:'/goods/detail/:id',
		component:Detail,
	},
  • Goods.vue
<template>
	<ul>
		<li @click="getGdoos(goods.id)" v-for="goods,index in goodsList" :key="index">
			{{goods.name}}
		</li>
	</ul>
</template>

<script>
	export default{
		data:function(){
			return {
				goodsList:[
					{id:1,name:'小明'},
					{id:2,name:'小花'},
					{id:3,name:'小红'}
				]
			}
		},
		methods:{
			getGdoos:function(id)
			{
				// console.log(id)	
				// 详情页跳转是编程式路由,push后面是跳转路径
				//push里面要用反引号,这个id和函数function的id对应
				//这种形式写,后面的路由需要改成动态路由
				// this.$router.push(`/goods/detail/${id}`)
				
				// 第一个id是自定义参数名 
				this.$router.push({path:'/goods/detail',query:{id:id}});
			}
		}
	}

</script>

<style>
</style>

  • Detail.vue
<template>
	<ul>
		<li @click="getGdoos(goods.id)" v-for="goods,index in goodsList" :key="index">
			{{goods.name}}
		</li>
	</ul>
</template>

<script>
	export default{
		data:function(){
			return {
				goodsList:[
					{id:1,name:'小明'},
					{id:2,name:'小花'},
					{id:3,name:'小红'}
				]
			}
		},
		methods:{
			getGdoos:function(id)
			{
				// console.log(id)	
				// 详情页跳转是编程式路由,push后面是跳转路径
				//push里面要用反引号,这个id和函数function的id对应
				//这种形式写,后面的路由需要改成动态路由
				// this.$router.push(`/goods/detail/${id}`)
				
				// 第一个id是自定义参数名 
				this.$router.push({path:'/goods/detail',query:{id:id}});
			}
		}
	}

</script>

<style>
</style>

路由传参3 类似post

this.$router.push({name:'detail',params:{id:id}});

this.goodsid = this.$route.params.id

用这个的好处就是url看不见参数,query在url能看见参数

  • index.js
	{
		path:'/goods/detail', //query的方式就不能是动态路由了
		// 动态路由,detail后面的参数会议id的形式传过来
		// path:'/goods/detail/:id',
		
		name:'detail',//声明路由, 给路由取一个名字,传参的时候就不用path了
		component:Detail,
	},
  • Goods.vue
<template>
	<ul>
		<li @click="getGdoos(goods.id)" v-for="goods,index in goodsList" :key="index">
			{{goods.name}}
		</li>
	</ul>
</template>

<script>
	export default{
		data:function(){
			return {
				goodsList:[
					{id:1,name:'小明'},
					{id:2,name:'小花'},
					{id:3,name:'小红'}
				]
			}
		},
		methods:{
			getGdoos:function(id)
			{
				// console.log(id)	
				// 详情页跳转是编程式路由,push后面是跳转路径
				//push里面要用反引号,这个id和函数function的id对应
				//这种形式写,后面的路由需要改成动态路由
				// this.$router.push(`/goods/detail/${id}`)
				
				// 第一个id是自定义参数名 
				// this.$router.push({path:'/goods/detail',query:{id:id}});
				
				//name是路由index.js中的name参数值,辞用name,后面参数必须用params
				this.$router.push({name:'detail',params:{id:id}});
			}
		}
	}

</script>

<style>
</style>


  • Detail.vue
<template>
	<p>我是商品详情页,商品id是{{goodsid}}</p>
</template>

<script>
	export default{
		created:function(){
			this.goodsid = this.$route.params.id
			
			
			// this.goodsid = this.$route.query.id
			
			
			// this.goodsid = this.$route.params.id
			// this.$route.params.id 获取参数名为id的值
			// console.log('good_id:'+this.$route.params.id)
			
			//query方式获取参数值
			console.log('good_id:'+this.$route.query.id)
		},
		data:function(){
			return {
				goodsid:''
			}
		}
	}
</script>

<style>
</style>



版权声明:本文为weixin_41887155原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。