vue路由router传参数方式

news/2024/7/10 1:07:13 标签: vue

params、query是什么?

params:/router1/:id ,/router1/123,/router1/789 ,这里的id叫做params

query:/router1?id=123 ,/router1?id=456 ,这里的id叫做query。

1 调用this.$router.push实现携带参数的跳转

      this.$router.push({
        path:`/About/${id}`
      })
    // 或者使用路由的name
    this.$router.push({
        name: "About",
        params: {id: id}
    })
//注意:params传参,push里面只能是 name:'xxxx',不能是path:'/xxx',因为params只能用name来引入路由,如果这里写成了path,接收参数页面会是undefined!!!
// 你使用params方法传参的时候,要在路由后面加参数名,并且传参的时候,参数名要跟路由后面设置的参数名对应 '/about/:id'。使用query方法,就没有这种限制,直接在跳转里面用就可以
// 注意:如果路由上面不写参数,也是可以传过去的,但不会在url上面显示出你的参数,并且当你跳到别的页面或者刷新页面的时候参数会丢失(如下图所示),那依赖这个参数的http请求或者其他操作就会失败。

// 在路由中配置
{
  path: '/about/:id',
  name: 'About',
  component: About
}



// 接收参数
this.$route.params

2 通过query传递参数

this.$router.push({
        name: "About",
        query: {id: id}
    })

// 路由配置
{
  path: '/about',
  name: 'About',
  component: About
}

// 接收参数
this.$route.query

3 router-link传递参数

// 通过query传递
 <router-link tag="div" :to="{path:'/playList',query:{id:item.id}}"></router-link>


//通过router-link在路由上加上query,然后通过query,获取数据
  let id = this.$route.query.id;
//注意:如果router-link的to属性指向本页面,需要在watch中监听路由的变化$route,然后调用函数请求数据,不然页面数据不会主动刷新

props

我们在定义路由规则的时候,可以传递props属性,属性值有两种情况
	第一种:属性值是true
		会将动态路由数据传递给组件
	第二种:属性值是函数
		参数是$route数据对象
		返回值表示给组件传递的数据
我们在组件中,通过props属性去接收这些数据(类似父组件向子组件通信)

    { 
        name: 'list', 
        path: '/list/:page', 
        component: List,
        // 会将动态路由数据传递给组件,只能传递动态数据
        // props: true
        // 传递更多的数据
        props(route) {
            return {
                page: route.params.page,
                path: route.path,
                hash: route.hash,
                color: route.query.color

            }
        }
    },
        
            // 我们在组件中,通过props属性去接收这些数据(类似父组件向子组件通信)
    props: ['page', 'path', 'hash', 'color'],

http://www.niftyadmin.cn/n/734975.html

相关文章

element-ui 表单校验

1 html <!-- 写样式&#xff1a;1 placeholder, 2 label, 3 label-width --><!-- 校验&#xff1a;1 v-model, 2 model, 3 prop, 4 rules --><!-- 提交数据&#xff1a;1 事件, 2 ref, 3 validate --><el-form label-width"100px" :model"…

Android图片优化指南

图片作为内存消耗大户&#xff0c;一直是开发人员尝试优化的重点对象。Bitmap的内存从3.0以前的位于native&#xff0c;到后来改成jvm&#xff0c;再到8.0又改回到native。fresco花费很多精力在5.0系统之前把Bitmap内存改回到native&#xff0c;高版本上面则遵循系统实现&#…

让Linux之花在你人生中绽放

2019独角兽企业重金招聘Python工程师标准>>> 在我们的人生中有太多的选择&#xff0c;每次的选择都会对我们之后的生活带来巨大的改变&#xff0c;所以我们的每次选择都要慎重考虑&#xff0c;在选择大学的时候&#xff0c;我选择了我现在所在的大学&#xff0c;今后…

js 时间转换标准格式、时间戳转换标准格式

一、当前时间转换为标准格式&#xff1a; function getFormatDate() {var date new Date();var month date.getMonth() 1;var day date.getDate();var hour date.getHours();var minutes date.getMinutes();var seconds date.getSeconds();month (month<10)? 0 mo…

mybatis 拓展 -- 通用mapper 和 动态 resultMap

前言之前公司用的jpa, 个人感觉很方便, 新的项目选择使用mybatis, sql都是写在xml文件里, 虽然基本的方法都有工具生成, 但是一旦数据增加一个字段, 修改这些方法真的是不爽, 而且个人看xml文件感觉是真的累, 就这样不爽里一段时间, 趁着项目空闲的时候, 研究下如何抛弃xml文件…

vue-router配置路由实现返回上一页,上一页页面数据留存

vue在返回上一页的时候执行this.$router.go(-1) &#xff0c;默认会让上一页重新执行一遍生命周期。 有时候我们不希望组件被重新渲染影响使用体验&#xff1b;或者处于性能考虑&#xff0c;避免多次重复渲染降低性能。而是希望组件可以缓存下来,维持当前的状态。这时候就可以…

vue中动态样式不起作用? scoped了解一下

vue中style标签使用属性scoped的注意事项 style上添加属性scoped可以实现样式私有化&#xff0c;但是在使用动态样式时&#xff0c;样式会不起作用。可以先去掉scoped转载于:https://www.cnblogs.com/zuojiayi/p/9364347.html

rem布局

1 rem与em rem单位&#xff1a;指的是html元素的font-size的倍数。和em关注父元素不同&#xff0c;rem只关注根元素(html) <html>---font-size: 20px; 这个就是基准字号 <body>---font-size: 2rem; 计算后是40px&#xff0c;不看父亲只看根<div>----font-si…