路由组件的传参

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
</head>
<body>
  <!--
    如果某个route上写了props: true属性,那么对应的路由组件上就会多出来一个属性
    {
      path: ‘/demo/:a‘,
      component: demo,
      props: true
    }

    相当于
    <demo v-bind="$route.params"></demo>
    又相当于
    <demo :id="$route.params.id"></demo>

    如果给路由对象上添加props等于true则对应的路由组件里就可以接收props
    props: {
      params参数: 数据类型
    }

    如果路由对象上的props是对象,则会按照原样添加给路由组件
    {
      path: ‘/‘,
      component: demo,
      props: {a: 1, b: 2, c: 3}
    }

    相当于
    <demo v-bind="{a: 1, b: 2, c: 3}"></demo>
    又相当于
    <demo :a="1" :b="2" :c="3"></demo>

    所以可以在demo组件中设置prop接收a b c三个值

    1 如果props是true
      则将route.params添加到组件上
      <com v-bind="route.params"></com>

    2 如果props是对象
      则将这个对象原样添加到组件上
      <com v-bind="props"></com>

    3 如过props是函数 (一般返回值为对象)
      则将这个函数的返回值添加到组件上
      <com v-bind="props返回值"></com>

    <com v-bind="{key:value}"></com>
    <com :key="value"></com>

    最终就可以在组件中设置props用于接收这些属性值

    这个不是新的功能,而是为了解耦提出的新的写法
   -->
  <div id="app">
    <router-view></router-view>
  </div>
  <script src="../vue.js"></script>
  <script src="../vue-router.js"></script>
  <script>
    const com = {
      template: `
        <div>组件</div>
      `,
      props: {
        id: String,
        // a: Number,
        // b: Number,
        // c: Number,
        // query: Object
        a: String,
        b: String,
        c: String,
      },
      created () {
        this.getData()
      },
      methods: {
        getData () {
          // console.log(this.$route.params.id)
          console.log(this.id)
          console.log(this.a, this.b, this.c)
          console.log(this.query)
        }
      }
    }

    const router = new VueRouter({
      routes: [
        {
          path: ‘/:id‘,
          component: com,
          // props: true
          /* props: {
            a: 1,
            b: 2,
            c: 3
          } */
          props: (route) => {
            return route.query
          }
        }
      ]
    })

    const app = new Vue({
      el: ‘#app‘,
      router
    })

  </script>
</body>
</html>

原文地址:https://www.cnblogs.com/bao2333/p/10278917.html

时间: 2024-11-10 11:28:32

路由组件的传参的相关文章

Vue ---- 组件文件分析 组件生命周期钩子 路由 跳转 传参

目录 Vue组件文件微微细剖 Vue组件生命周期钩子 Vue路由 1.touter下的index.js 2.路由重定向 3.路由传参数 补充:全局样式导入 路由跳转 1. router-view标签 2. router-link标签 3.逻辑跳转 this.$router 控制路由跳转 this.$route 控制路由数据 Vue组件文件微微细剖 组件在view 文件中创建 如果需要用到其他小组件可以 在 component文件中创建并导入 view文件下: <template> <di

vue2.0路由写法和传参

前置知识请戳这里 vue-routerCDN地址:https://unpkg.com/[email protected]/dist/vue-router.js vue-router下载地址:https://github.com/vuejs/vue-router/tree/dev/dist vue2.0路由基本写法 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title&

Vue之路由跳转传参,插件安装与配置

路由跳转 this.$router.push('/course'); this.$router.push({name:course}); this.$router.go(-1); //后退一页 this.$router.go(1): // 前进一页 <router-link to = "/course">课程页</router-link> <router-link :to="{name:'course'}"> 课程页 </r

ionic简单路由及页面传参

1)页面跳转及传参方法 angular.module('app.routes', [])//routes路由模型 .config(function($stateProvider, $urlRouterProvider) { $stateProvider .state('page1', { url: '/page1',//路由地址 templateUrl: 'templates/page1.html',//实际模型文件 controller: 'page1Ctrl',//控制器 params:{a

爬虫scrapy组件 请求传参,post请求,中间件

post请求 在scrapy组件使用post请求需要调用 def start_requests(self): 进行传参再回到 yield scrapy.FormRequest(url=url,formdata=data,callback=self.parse)进行post请求 其中FormRequest()为post 请求方式 import scrapy class PostSpider(scrapy.Spider): name = 'post' # allowed_domains = ['ww

前台VUE的组件之间传参方式

路由传参 """ 转跳: <router-link :to="'/course/'+course.id">{{course.name}}</router-link> 路由: { path: '/course/:course_id', name: 'detail', component: Detail } 获取: this.$route.params.course_id """ ""&

vue-router2.0 组件之间传参及获取动态参数

<li v-for=" el in hotLins" > <router-link :to="{path:'details',query: {id:el.tog_line_id}}"> <img :src="el.image_list[0]"> <h3>{{el.tourism_name}} {{el.tog_line_id}}</h3> <p>{{el.address}}&

vue 路由跳转传参

<li v-for="article in articles" @click="getDescribe(article.id)"> getDescribe(id) { // 直接调用$router.push 实现携带参数的跳转 this.$router.push({ path: `/describe/${id}`, }) this.$route.params.id 父组件中:通过路由属性中的name来确定匹配的路由,通过params来传递参数. this

ng4 路由多参数传参以及接收

import { Router } from '@angular/router'; constructor( private router:Router, ) { } goApplicationDetail(instanceId:number,ownerShip:boolean){ return this.router.navigate(['/console/details/appDetail',{"instanceId":instanceId,"ownerShip"