Vue Router携带并接收query、params参数方式

这篇具有很好参考价值的文章主要介绍了Vue Router携带并接收query、params参数方式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

携带query参数

  1. 传递参数
    【方式一:通过查询字符串直接拼接在路径后面】
    【方式二:传递一个对象,路径是path属性,拼接的参数是query属性,推荐】

    <template>
    	<div>
    		<ul>
    			<li v-for="item in dataList" :key="item.id">
    				<!-- 方式一:模板字符串拼接 -->
    				<router-link :to="`/list/detail?id=${item.id}&title=${item.title}&content=${item.content}`">进入{{item.title}},查看详情</router-link>
    				<!-- 方式二:对象写法 -->
    				<router-link :to="{
    					path: '/list/detail',
    					query: {
    						id: item.id,
    						title: item.title,
    						content: item.content
    					}
    				}">进入{{item.title}},查看详情</router-link>
    			</li>
    		</ul>
    		<router-view></router-view>
    	</div>
    </template>
    <script>
    	name: 'List',
    	data() {
    		return {
    			dataList: [{
    				id: 1,
    				title: '标题1'content: '内容1'
    			}, {
    				id: 2,
    				title: '标题2',
    				content: '内容2'
    			}, {
    				id: 3,
    				title: '标题3',
    				content: '内容3'
    			}]
    		}
    	}
    </script>
    
  2. 接收参数
    【直接在$route.query中获取】

    <template>
    	<div>
    		<p>id:{{$route.query.id}}</p>
    		<p>标题:{{$route.query.title}}</p>
    		<p>内容:{{$route.query.content}}</p>
    	</div>
    </template>
    <script>
    export default {
    	name: 'Detail'
    }
    </script>
    

携带params参数

  1. router/index.js
    【需要在router中配置path、name】
    import Vue from 'vue';
    import VueRouter from 'vue-router';
    Vue.use(VueRouter);
    export default new VueRouter({
    	routes: [{
    		name: 'xiangqing',
    		path: '/detail/:id/:title/:content',   // 需要通过这种方式给参数占个坑
    		component: 'Detail'
    	}]
    });
    
  2. 传递参数
    <template>
    	<div>
    		<router-link to="/detail/001/标题/内容">进入详情</router-link>  <!-- 字符串方式 -->
    		<router-link :to="{
    			name: 'xiangqing',
    			params: {
    				id: '001',
    				title: '标题',
    				content: '内容'
    			}
    		}">进入详情</router-link> <!-- 使用对象方式时,只能使用name属性,不能使用path -->
    	</div>
    </template>
    
  3. 接收参数
    <template>
    	<div>
    		<p>id: {{$route.params.id}}</p>
    		<p>标题:{{$route.params.title}}</p>
    		<p>内容:{{$route.params.content}}</p>
    	</div>
    </template>
    

上述接收参数的方式存在代码冗余,利用props方式接收query、params参数,简化代码

  1. 在router/index.js中配置props属性

    import Vue from 'vue';
    import VueRouter from 'vue-router';
    import List from '@/pages/List';
    import Detail from '@/pages/Detail'
    Vue.use(VueRouter);
    export default new VueRouter({
    	routes: [{
    		path: '/list',
    		component: List,
    		children: [{
    			path: 'detail',
    			component: Detail,
    			props: true,    // props设置为true,在组件中只能接收params方式传过来的参数,query参数无法获取
    			props($route) {  // props为函数,功能强大,query、params参数都可以获取
    				return {
    					id: $route.query.id,
    					title: $route.query.title,
    					content: $route.query.content
    				}
    				// 或者
    				return {
    					id: $route.params.id,
    					title: $route.params.title,
    					content: $route.params.content
    				}
    			}
    		}]
    	}]
    });
    
  2. 接收参数文章来源地址https://www.toymoban.com/news/detail-642531.html

    <template>
    	<div>
    		<p>id: {{id}}</p>
    		<p>title: {{title}}</p>
    		<p>content: {{content}}</p>
    	</div>
    </template>
    <script>
    export default {
    	name: 'Detail',
    	props: ['id', 'title', 'content']
    }
    </script>
    

到了这里,关于Vue Router携带并接收query、params参数方式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Element UI 页面传参与接收参数,注意router和route

    在 Element UI 中,可以使用 $router 对象来进行页面跳转并设置请求参数。同时,也可以在目标页面中使用 $route 对象来获取传递的参数。 以下是一个示例: 在跳转前的页面中,使用 $router 对象进行跳转并设置参数: 在这个例子中,跳转前的页面通过 $router 对象的 push 方法进行

    2024年01月18日
    浏览(24)
  • [Vue Router warn]: Discarded invalid param(s) “id“ when navigating. Seexxxxxxxfor more details

     警告信息建议访问的链接 场景: 当我 在vue3 组合式api中尝试使用name+params去路由跳转并传递参数的时候,出现警告信息,并且接收不到params的参数。代码如下: a页面跳转b页面 点击链接查看到更新日志 也就是说,从Vue Router的2022-8-22 这次更新后,我们使用上面的方式在新页

    2024年02月07日
    浏览(40)
  • vue路由及参数router

    1.1 如果还没安装node.js, 则先安装node.js ,安装完成后,查看node版本 1.2 安装淘宝镜像, 安装完成后查看npm版本:npm -v 1.3 安装webpack 1.4 安装vue全局脚手架,vue-cli2.x使用 npm install -g vue-cli , vue-cli3.x使用 npm install -g @vue/cli 安装, 查看vue版本: vue -V 1.5 准备工作做好了,开始正

    2024年01月23日
    浏览(34)
  • react 11之 router6路由 (两种路由模式、两种路由跳转、两种传参与接收参数、嵌套路由,layout组件、路由懒加载)

    npm i react-router-dom 两种模式 Router:所有路由组件的根组件,包裹路由的最外层容器 Link:跳转路由组件 Routes :用于定义和渲染路由规则( 用于替换 Switch 组件) Route:路由规则匹配组件,显示当前规则对应的组件 exact = 精确匹配,只有当 path 和 pathname 完全匹配时才会展示该路由

    2024年02月12日
    浏览(32)
  • vue3上传多个文件并携带参数一起上传,后台java接收

    直接上代码 vue代码 上传文件组件,采用element-plus 这里采用的是手动上传,选取文件后,点击保存才会触发上传操作 这个地方如果不添加.raw  可以看到这个files是个[object Object] 同样它传入后台是个String类型 你用MultipartFile[]来接收这个String类型的 “[object Object]” 这肯定不行

    2024年02月13日
    浏览(33)
  • 利用vue-router跳转的几种方式

    ​1 router-link 2 this.$router.push     跳转到指定路径,并将跳转页面压入history栈中,也就是添加了一个页面记录。 3 this.$router.replace     跳转到指定路径,将history栈中的当前页面替换为跳转到的页面。 4 this.$router.go(n)     在histroy栈中向前或者向后跳转n个页面,n可为正整数或负

    2024年02月12日
    浏览(36)
  • vue3中使用route、router、store的方式

    route:  (1) vue3写法:  (2) vue2写法:  router:  (1) vue3写法:  (2) vue2写法:  store:  (1) vue3写法:  (2) vue2写法:

    2024年02月13日
    浏览(29)
  • Vue3——getCurrentInstance、页面中route和router的获取方式

    getCurrentInstance() 在vue2中,可以通过this来获取组件实例,但是在vue3的setup函数中,无法通过this获取到组件实例,在setup函数中this的值是undefined,但是vue3提供了getCurrentInstance()来获取组件的实例对象; 输出结果:  可以看出,getCurrentInstance是一个方法,getCurrentInstance()是一个对

    2024年02月15日
    浏览(29)
  • Vue-router 3.x 参数传递看完让你明明白白!

    Vue- routrer,页面路由跳转时,携带参数传递 并拿取传递过来的参数,本文将详细讲解 Vue router传递参数的多种方式; 如果你还不了解 Vuerouter 基本使用及配置请通过下面传送门,了解vue router 路由的基本配置及使用 传送门去了解 Vue-router params参数传递也有两种方式:第一种就

    2024年02月06日
    浏览(31)
  • vue使用axios发送post请求携带json body参数,后端使用@RequestBody进行接收

    最近在做自己项目中,做一个非常简单的新增用户场景,但是使用原生axios发送post请求的时候,还是踩了不少坑的。 唉,说多了都是泪,小小一个新增业务,在自己前后端一起开发的时候,硬是搞了好久。 下面就把问题总结分享下,防止后人再踩坑。 首先先看下我的接口定

    2024年02月02日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包