【无标题】

Vue路由传递参数和接受参数的方式
  1. query的方式传参
    1. 将要传递的参数携带在路由上的方式

      1. 传参

         <router-link :to="`/home/news/detail?id=${news.id}&title=${news.msg}`">{{ news.msg }}</router-link>
        
      2. 接受参数(直接使用$route来接受参数)

        <template>
          <div class="col-xs-6">
            <div class="panel">
              <div class="panel-body">
                <h2>新闻详情</h2>
                <h5>ID:{{ $route.query.id }}</h5>
                <h5>新闻标题:{{ $route.query.title }}</h5>
              </div>
            </div>
          </div>
        </template>
        <script>
        export default {
          name: 'Detail',
          data() {
            return {
        
            }
          },
        }
        </script>
        
    2. 使用对象的方式传递参数

      1. 传递

        <li v-for="news in newsList" :key="news.id">
            <router-link :to="{
                name: 'detail',
                query: {
                  id: news.id,
                  title: news.msg
            }
        }">{{ news.msg }}</router-link>
        </li>
        
      2. 接收

        <template>
          <div class="col-xs-6">
            <div class="panel">
              <div class="panel-body">
                <h2>新闻详情</h2>
                <h5>新闻ID:{{ $route.query.id }}</h5>
                <h5>新闻标题:{{ $route.query.title }}</h5>
              </div>
            </div>
          </div>
        </template>
        <script>
        export default {
          name: 'Detail',
          data() {
            return {
        
            }
          },
        }
        </script>
        
    3. 使用props的方式传递参数

      1. 传参

        <li v-for="news in newsList" :key="news.id">
            <router-link :to="{
        name: 'detail',
            query: {
                id: news.id,
                    title: news.msg
            }
        }">{{ news.msg }}</router-link>
        </li>
        
      2. 路由的参数

        {
              path: '/home',
              component: Home,
              children: [
                {
                  path: 'news',
                  component: News,
                  children: [
                    {
                      name: 'detail',//路由的命名
                      path: 'detail',
                      component: Detail,
                      props($route) {
                        return { id: $route.query.id, title: $route.query.title }
                      }
                    }
                  ]
                },
                {
                  path: 'message',
                  component: Message
                }
              ]
            },
        
      3. 接收参数

        <template>
          <div class="col-xs-6">
            <div class="panel">
              <div class="panel-body">
                <h2>新闻详情</h2>
                <h5>新闻ID:{{ id }}</h5>
                <h5>新闻标题:{{ title }}</h5>
              </div>
            </div>
          </div>
        </template>
        <script>
        export default {
          name: 'Detail',
          props: ['id', 'title'], //使用props接收参数
          data() {
            return {
        
            }
          },
        }
        </script>
        
  2. 使用params传递参数

    1. 路由占位方式传参

      1. 传参

        <li v-for="news in newsList" :key="news.id">
            <router-link :to="`/home/news/detail/${news.id}/${news.msg}`">{{ news.msg }}</router-link>
        </li>
        
      2. 路由占位符

        children: [
            {
                path: 'news',
                component: News,
                children: [
                    {
                        name: 'detail',
                        path: 'detail/:id/:title',
                        component: Detail
                    }
                ]
            },
            {
                path: 'message',
                component: Message
            }
        ]
        
      3. 接收参数

        <template>
          <div class="col-xs-6">
            <div class="panel">
              <div class="panel-body">
                <h2>新闻详情</h2>
                <h5>新闻ID:{{ $route.params.id }}</h5>
                <h5>新闻标题:{{ $route.params.title }}</h5>
              </div>
            </div>
          </div>
        </template>
        <script>
        
    2. 路由对象的方式传递参数

      1. 传参

        <li v-for="news in newsList" :key="news.id">
            <router-link :to="{
        name: 'detail',
            params: {
                id: news.id,
                    title: news.msg
            }
        }">{{ news.msg }}</router-link>
        </li>
        
      2. 路由占位

        children: [
            {
                name: 'detail',
                path: 'detail/:id/:title',
                component: Detail
            }
        ]
        
      3. 接收参数

        <template>
          <div class="col-xs-6">
            <div class="panel">
              <div class="panel-body">
                <h2>新闻详情</h2>
                <h5>新闻ID:{{ $route.params.id }}</h5>
                <h5>新闻标题:{{ $route.params.title }}</h5>
              </div>
            </div>
          </div>
        </template>
        
    3. props的形式传参

      1. 传递参数

        <li v-for="news in newsList" :key="news.id">
            <router-link :to="{
        name: 'detail',
            params: {
                id: news.id,
                    title: news.msg
            }
        }">{{ news.msg }}</router-link>
        </li>
        
      2. 路由的props和占位符

        children: [
            {
                name: 'detail',
                path: 'detail/:id/:title',
                component: Detail,
                props($route) {
                    return {
                        id: $route.params.id,
                        title: $route.params.title
                    }
                }
            }
        ]
        
      3. 接收参数

        <template>
          <div class="col-xs-6">
            <div class="panel">
              <div class="panel-body">
                <h2>新闻详情</h2>
                <h5>新闻ID:{{ id }}</h5>
                <h5>新闻标题:{{ title }}</h5>
              </div>
            </div>
          </div>
        </template>
        <script>
        export default {
          name: 'Detail',
          props: ['id', 'title'],
          data() {
            return {
        
            }
          },
          mounted() {
            console.log(this.$route)
          },
        }
        </script>
        
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值