Vue 路由传递参数 query、params

1、to的对象写法,绑定参数 

<template>
2  <ul>
3    <li v-for="m in messlist" :key="m.id">
4      <router-link :to="{ 
        //使用params时,这个路径必须用name及别名......name: 'xiangqing', 
        path: '/bbb/message/detail', 
        query: { id: m.id }}"> {{ m.title }}</router-link>
5    </li>
6  </ul>
7</template>

2、字符串路径写法

<template>
2  <ul>
3    <li v-for="m in messlist" :key="m.id">
4      <router-link :to="'/bbb/message/detail?id=' + m.id"> {{ m.title }}</router-link>
5    </li>
6  </ul>
7</template>

 3、接受页面接受参数

<template>
    <div>
        <!---------直接接受参数-------->
        id是:{{ $route.query.id }}
        id是:{{ $route.query.title }}
        ===================================
        <br>
        <!-----------监听参数--------->
        id是:{{ title }}
        id是:{{ id }}
    </div>
</template>
<script>
export default {
    name: 'Detail',
    data() {
        return {
            'id': '',
            'title':''
        }
    },
    mounted() {
        console.log(this.$route)
    },
    watch: {
        '$route.query': {
            handler(newQuery) {
                // 根据需要更新组件的状态
                console.log(newQuery.id)
                this.id = newQuery.id
                this.title = newQuery.title
                //也可以通过axios获取数据渲染
            },
            immediate: true, // 立即执行一次,确保在首次渲染时也能触发
            deep: true // 监听对象内部属性的变化
        }
      
    },
}
</script>

===========================params=====================================

<template>
    <div>
        <!---------直接接受参数-------->
        id是:{{ $route.query.id }}
        id是:{{ $route.query.title }}
        ===================================
        <br>
        <!-----------监听参数--------->
        id是:{{ title }}
        id是:{{ id }}
        ===================================
        <!---------直接接受参数-------->
        <br>
        params接受id是:{{ $route.params.id }}
        params接受id是:{{ $route.params.title }}
        ===================================
        <br>
    </div>
</template>
<script>
export default {
    name: 'Detail',
    data() {
        return {
            'id': '',
            'title':''
        }
    },
    mounted() {
        console.log(this.$route)
    },
    watch: {
        // '$route.query': {
        //     handler(newQuery) {
        //         // 根据需要更新组件的状态
        //         console.log(newQuery.id)
        //         this.id = newQuery.id
        //         this.title = newQuery.title
        //     },
        //     immediate: true, // 立即执行一次,确保在首次渲染时也能触发
        //     deep: true // 监听对象内部属性的变化
        // }
        '$route.params': {
            handler(newQuery) {
                // 根据需要更新组件的状态
                console.log(newQuery.id)
                this.id = newQuery.id
                this.title = newQuery.title
            },
            immediate: true, // 立即执行一次,确保在首次渲染时也能触发
            deep: true // 监听对象内部属性的变化
        }
      
    },
}
</script>

相关推荐

  1. vue3 + ts,如何获取传递参数

    2024-06-12 14:36:03       22 阅读
  2. vue3跳转传递参数: params传参接收不到?

    2024-06-12 14:36:03       14 阅读
  3. vue参数router

    2024-06-12 14:36:03       36 阅读
  4. vue中watch监听传来参数变化问题

    2024-06-12 14:36:03       12 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-12 14:36:03       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-12 14:36:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-12 14:36:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-12 14:36:03       18 阅读

热门阅读

  1. 力扣-238

    2024-06-12 14:36:03       6 阅读
  2. VMware Workstation 15.5 pro

    2024-06-12 14:36:03       4 阅读
  3. 发布 AI 后,苹果股价创历史新高

    2024-06-12 14:36:03       9 阅读
  4. Flutter娱乐与休闲类APP常用的第三方库总汇

    2024-06-12 14:36:03       7 阅读
  5. GTSAM | gtsam::ISAM2Params

    2024-06-12 14:36:03       5 阅读
  6. nginx配置后访问出现白屏怎么办?

    2024-06-12 14:36:03       7 阅读
  7. 发布自己的npm插件包

    2024-06-12 14:36:03       7 阅读
  8. C#防止多次注册事件

    2024-06-12 14:36:03       6 阅读
  9. HTML5的新语义化标签

    2024-06-12 14:36:03       8 阅读