首页 > 其他分享 >vue路由通过props传参

vue路由通过props传参

时间:2023-11-17 16:13:36浏览次数:420  
标签:传参 vue name age props 路由 页面

方式一:布尔模式

方法一:直接传参

路由配置:

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

页面 A

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

页面 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:

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

页面 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>

标签:传参,vue,name,age,props,路由,页面
From: https://www.cnblogs.com/wp-leonard/p/17838992.html

相关文章

  • Vue $nextTick原理
    作用:vue更新DOM是异步更新的,数据变化,DOM的更新不会马上完成,nextTick的回调是在下次DOM更新循环结束之后执行的延迟回调。实现原理:nextTick主要使用了宏任务和微任务。根据执行环境分别尝试采用Promise:可以将函数延迟到当前函数调用栈最末端MutationObserver:是H5新加......
  • vue2为什么只重写了7个数组方法
    首先看源码//即将要被劫持的数组letarr=[1,2,3];//先把要劫持的方法列出来letmethods=["push","pop","shift","unshift","reverse","sort","splice"];//既然要劫持原型,就要先把原型拿过来letarrayProto=Array.prototy......
  • vue组件递归
    这样的场景:渲染列表数据的时候,列表的子项还是列表。如果层级少尚且可以用几个for循环搞定,但是层级多或者层级不确定就有点无从下手了。其实这就是树形结构数据,像常见的组织架构图,文件夹目录,导航菜单等都属于这种结构。很多组件库都带有树形组件,但往往样式不是想要的,改起来也非......
  • vue2.0源码简读(5. 扩展)
    5.1event平时开发工作中,处理组件间的通讯,原生的交互,都离不开事件。对于一个组件元素,不仅仅可以绑定原生的DOM事件,还可以绑定自定义事件,非常灵活和方便。那么接下来从源码角度来看看它的实现原理。为了更加直观,通过一个例子来分析它的实现:letChild={template:'<button......
  • vue2.0源码简读(6. Vue Router)
    6.1路由注册Vue从它的设计上就是一个渐进式JavaScript框架,它本身的核心是解决视图渲染的问题,其它的能力就通过插件的方式来解决。Vue-Router就是官方维护的路由插件,在介绍它的注册实现之前,先来分析一下Vue通用的插件注册原理。Vue.useVue提供了Vue.use的全局API来......
  • vue2.0源码简读(7. Vuex)
    7.1Vuex初始化这一节主要来分析Vuex的初始化过程,它包括安装、Store实例化过程2个方面。安装当在代码中通过importVuexfrom'vuex'的时候,实际上引用的是一个对象,它的定义在src/index.js中:exportdefault{Store,install,version:"__VERSION__",mapSt......
  • vue中created、watch和computed的执行顺序
    总结关于vue中created和watch的执行顺序相对比较简单,而其中computed是通过Object.defineProperty为当前vm进行定义,再到后续创建vNode阶段才去触发执行其get函数,最终执行到计算属性computed对应的逻辑。官网的生命周期图中,initreactivity是晚于beforeCreate......
  • vue~全局插件和全局方法的注册
    本文介绍如何在vue中定义插件,注册插件和使用插件插件目录/src/plugins插件入口文件/src/plugins/index.jsimportcachefrom'./cache'importmodalfrom'./modal'//安装默认插件,在main.js中引入,通过Vue.use()使用它,因为index.js里使用exportdefault导出,所有在main.js里导入......
  • vue上传视频插件
    视频作为一种信息表达方式,越来越受到人们的关注和喜爱。近年来,随着移动互联网的普及,手机、平板电脑等设备可以随时随地观看视频。在开发网站或移动应用时,上传和展示视频成为一项不可或缺的功能。Vue作为一种现代化JavaScript框架,提供了丰富的开发工具和插件,其中视频上传插件是Vue开......
  • vue实现视频上传功能
    本文实例为大家分享了vue实现视频上传功能的具体代码,供大家参考,具体内容如下环境:vue+TS上传视频+上传到阿里云主要处理前端在vue下上传视频使用的是阿里云的视频点播服务1、需要后台去申请一个开发API,请求阿里云的接口访问控制2、有了开发视频的token,供给前端3、前端去请求阿......