vue路由通过props传参

vue路由通过props传参

最近在学习vue router的传参,查询官网,作为小白真心有点看不懂,折腾了很久才搞懂最简单的一个方式,官网地址:https://router.vuejs.org/zh/guide/essentials/passing-props.html

网上查了蛮多资料,终于搞明白是什么情况,总结内容如下:

非props方式传参:

方式一:使用params传参

路由配置

    {
      path: '/propstest',
      name: 'PropsTest',
      component: PropsTest,
    }

页面A

      <div>
        <router-link :to="{name:'PropsTest',params:{name:'lynn',like:'水果'}}">传参方式</router-link>
      </div>

页面B

<template>
  <div>
    <div>路由传参页面</div>
    <br />
    <div>姓名: {{ $route.params.name }}--喜欢的是: {{ $route.params.like}}</div>
  </div>

</template>

方式二:使用query传参

路由配置、页面都和params方式一直,只要将params更换为query即可。

 

props方式传参:

方式一:布尔模式

方法一:直接传参

路由配置:

{
      path: '/user/:id/:price',
      name: 'User',
      component: User,
      props: true
    }

页面A:

<div>
     <router-link :to="{name:'User', params: {'id':12320,'price':'$100'}}">传参方式布尔传值</router-link>
</div>

页面B:

<template>
    <div>
      <div>路由接收参数页面</div>
      <br />
      <div>id号:{{ id }} -- 价格:{{ price }}</div>
    </div>
</template>

<script>
    export default {
        name: "User",
      props: ['id','price']
    }
</script>

方法二:参数为对象类型

路由配置

    {
      path: '/user',
      name: 'User',
      component: User,
      props: true
    }

页面A:

<template> 
     <div>
        <router-link :to="{name:'User', params: {user}}">传参方式布尔传值</router-link>
      </div>
</template>

<script>
    export default {
        name: "*****",
      data(){
          return{
            user:{
              name: '小明',
              age: 18,
              sex: '男',
            }
          }
      },

    }
</script>

页面B:

<template>
    <div>
      <div>路由接收参数页面</div>
      <br />
      <div>用户姓名为: {{ user.name }}--年龄为:{{ user.age }}--性别为:{{ user.sex }}</div>
    </div>
</template>

<script>
    export default {
        name: "User",
      props: ['user']
    }
</script>

方式二:函数模式

方法一:直接传参

路由配置:

    {
      path: '/searchuser',
      name: 'SearchUser',
      component: SearchUser,
      props : (route) => ({
        name : route.query.name,
        age : route.query.age
      })
    }

页面A:

      <div>
        <router-link :to="{name:'SearchUser', query:{'name':'paul', 'age':20}}">传参方式函数传值</router-link>
      </div>

页面B:

<template>
    <div>
      <div>接收路由参数页面</div>
      <br />
      <div>姓名为:{{ name }} -- 年龄为:{{ age }}</div>
    </div>
</template>

<script>
    export default {
        name: "SearchUser",
      props: ['name', 'age']
    }
</script>

方法二:参数为对象类型

路由配置:

    {
      path: '/searchuser',
      name: 'SearchUser',
      component: SearchUser,
      props : route =>route.query
    }

页面A:

<template> 
     <div>
        <router-link :to="{name:'SearchUser', query:{searchUser}}">传参方式函数传值</router-link>
      </div>
</template>

<script>
    export default {
        name: "*****",
      data(){
          return{
            searchUser:{name:'张三',age:39}
          }
      },

    }
</script>

页面B:

<template>
    <div>
      <div>接收路由参数页面</div>
      <br />
      <div>姓名为:{{ searchUser.name }} -- 年龄为:{{ searchUser.age }}</div>
    </div>
</template>

<script>
    export default {
        name: "SearchUser",
      props: ['searchUser']
    }
</script>

方式三:对象模式

如果 props 是一个对象,它会被按原样设置为组件属性。当 props 是静态的时候有用。

路由配置:

    {
      path: '/sidebar',
      name: 'Sidebar',
      component: Sidebar,
      props : {'name':'lynn','age':18}
    }

页面A:

<router-link :to="{name:'Sidebar'}">传参方式静态对象</router-link>

页面B:

<template>
  <div>
    <div>路由接收参数页面</div>
    <br />
    <div>Sidebar {{ name }}--{{ age }}</div>
  </div>
</template>

<script>
    export default {
        name: "Sidebar ",
      props: ['name','age'],

    }
</script>

 

  • 10
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Vue3中,路由传参props可以通过以下几种方式实现。 1 - 第一种方式是使用对象作为props的值,在路由配置中指定该对象中的所有key-value都会以props的形式传递给组件。例如,可以在路由配置中的props中添加一个对象,如`props:{a:1, b:'hello'}`,这样在Detail组件中可以通过props来接收这些参数。 2 - 第二种方式是将props的值设置为布尔值true。这样,如果该布尔值为真,路由组件将以props的形式接收所有params参数传递给组件。 3 - 第三种方式是使用函数作为props的值。在函数中,可以访问$route对象并返回一个对象,该对象将作为props传递给组件。例如,可以在路由配置的props中添加一个函数,如`props($route){ return {id:$route.query.id, title:$route.query.title} }`,这样在Detail组件中可以通过props来接收这些参数。 以上是Vue3中路由传参props的三种常见方式。您可以根据需要选择适合的方式来传递参数给组件。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [vue-router--路由传参--props传参](https://blog.csdn.net/qq_43470725/article/details/125360040)[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^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [Vue3路由传参](https://blog.csdn.net/qq_54334713/article/details/126721772)[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^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值