vue-router 路由组件传参

矫情吗;* 2021-09-15 03:04 547阅读 0赞

1.最简单的用 name传参

$route.name 输出的是当前路由 ,不过这个一般不用

  1. 1.在路由文件router/index.js里配置name属性。
  2. routes: [
  3. {
  4. path: '/',
  5. name: 'Hello',
  6. component: Hello
  7. }
  8. ]
  9. 2.模板里(src/App.vue)用$router.name的形势接收,比如直接在模板中显示:
  10. <p>{
  11. { $route.name}}</p>

2.使用vuex 状态管理 this.$store.state.count 获取数据

其实就是把值存在store,然后在去取store的值

  1. 1.在文件store/store.js里定义变量
  2. const state = {
  3. count:3
  4. }
  5. export default new Vuex.Store({
  6. state,
  7. actions,
  8. modules,
  9. getters,
  10. mutations
  11. })
  12. 2.模板里(src/App.vue)用的this.$store.state.count形势接收,比如直接在模板中显示:
  13. <template>
  14. <div>
  15. <h4>测试1Count is {
  16. {count}}</h4>
  17. </div>
  18. </template>
  19. <script>
  20. export default {
  21. computed:{
  22. count(){
  23. return this.$store.state.count
  24. }
  25. }
  26. }
  27. </script>

3.通过 标签中的to传参

  1. <router-link
  2. :to="{
  3. path: 'yourPath',
  4. params: {
  5. name: 'name',
  6. dataObj: data
  7. },
  8. query: {
  9. name: 'name',
  10. dataObj: data
  11. }
  12. }">
  13. </router-link>
  14. 1. path -> 是要跳转的路由路径,也可以是路由文件里面配置的 name 值,两者都可以进行路由导航
  15. 2. params -> 是要传送的参数,参数可以直接key:value形式传递
  16. 3. query -> 是通过 url 来传递参数的同样是key:value形式传递
  17. // 2,3两点皆可传递

在子组件中获取this.$route.query.name

4.$router方式跳转

(1).$route.params.id获取路由上的参数

如新闻列表页,我们需要传递新闻ID,给新闻详细页。

1.新闻列表页:新闻001

我们访问/news/001,跳转到新闻详细页,展示001的这条新闻。

2.新闻详细页组件准备

$route.params.id获取路由上的参数
在js里定义路由组件:
const NewsDetail = { template: ‘#NewsDetail’ };//新闻详细页组件

3.定义路由,增加一个路由

{ path: ‘/news/:id’, component: NewsDetail },

如demo 所示

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <title></title>
  5. <meta charset="utf-8">
  6. <script src="http://unpkg.com/vue/dist/vue.js"></script>
  7. <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
  8. </head>
  9. <body>
  10. <div id="box">
  11. <p>
  12. <router-link to="/home">home</router-link>
  13. <router-link to="/news">news</router-link>
  14. </p>
  15. <router-view></router-view>
  16. </div>
  17. <!-- 模板抽离出来 -->
  18. <template id="home">
  19. <!-- 注意:组件只能有一个根元素,所以我们包装到这个div中 -->
  20. <div>
  21. <h2>首页</h2>
  22. <router-link to="/home/login">登录</router-link>
  23. <router-link to="/home/reg">注册</router-link>
  24. <!-- 路由匹配到的组件将渲染在这里 -->
  25. <router-view></router-view>
  26. </div>
  27. </template>
  28. <template id="news">
  29. <div>
  30. <h2>新闻列表</h2>
  31. <ul>
  32. <li>
  33. <router-link to="/news/001">新闻001</router-link>
  34. </li>
  35. <li>
  36. <router-link to="/news/002">新闻002</router-link>
  37. </li>
  38. </ul>
  39. </div>
  40. </template>
  41. <template id="login">
  42. <div>登录界面</div>
  43. </template>
  44. <template id="reg">
  45. <div>注册界面</div>
  46. </template>
  47. <template id="NewsDetail">
  48. <div>
  49. 新闻详细页面
  50. <span>{
  51. {$route.params.id}}</span>
  52. </div>
  53. </template>
  54. <script type="text/javascript">
  55. // 1. 定义(路由)组件。
  56. const Home = { template: '#home' };
  57. const News = { template: '#news' };
  58. const Login = { template: '#login' };
  59. const Reg = { template: '#reg' };
  60. //新闻详细页组件
  61. const NewsDetail = { template: '#NewsDetail' };
  62. // 2. 定义路由
  63. const routes = [
  64. { path: '/', redirect: '/home' },
  65. {
  66. path: '/home',
  67. component: Home,
  68. children:[
  69. { path: '/home/login', component: Login},
  70. { path: '/home/reg', component: Reg}
  71. ]
  72. },
  73. { path: '/news', component: News,},
  74. { path: '/news/:id', component: NewsDetail },
  75. ]
  76. // 3. 创建 router 实例,然后传 `routes` 配置
  77. const router = new VueRouter({
  78. routes // (缩写)相当于 routes: routes
  79. })
  80. // 4. 创建和挂载根实例。
  81. // 记得要通过 router 配置参数注入路由,
  82. // 从而让整个应用都有路由功能
  83. const app = new Vue({
  84. router
  85. }).$mount('#box')
  86. // 现在,应用已经启动了!
  87. </script>
  88. </body>
  89. </html>

此例子也可以参考:vue-router 基本语法 中vue项目中路由配置小案例 传参

5.属性携带数据

注意:只针对相连的子组件

  1. 父组件:
  2. <router-link to="/message">新闻资讯</router-link>
  3. <router-view :msg="msg"></router-view>
  4. export default {
  5. data () {
  6. return {
  7. msg:"router-view传递"
  8. }
  9. },
  10. }
  11. </script>
  12. 子组件:message.vue
  13. <h1>{
  14. {msg}}</h1>
  15. export default {
  16. //要先声明接受属性,
  17. props:["msg"]
  18. }
  19. </script>

发表评论

表情:
评论列表 (有 0 条评论,547人围观)

还没有评论,来说两句吧...

相关阅读

    相关 VueRouter

    1. 前言 本小节我们介绍 VueRouter 路由组件传参。包括 params 传参、query 传参的两种方式。路由传参的知识点非常重要,在日常开发中,我们经常会通过

    相关 vue-03--

    和平时的页面跳转一样,我们可能需要在地址栏上传递某些参数,例如,从商品列表页面,跳转的某个商品的详情页面,这个时候,如果是页面跳转的时候,我们会直接在url上跟上一个商品id,