vue3中的useRoute和useRouter

阅读数:191 评论数:0

跳转到新版页面

分类

html/css/js

正文

一、useRouter传参的方式

1、隐匿传参params

import { useRouter } from 'vue-router'
export default {
    setup() {
        const userRouter = useRouter()
        userRouter.push({
            name: 'Home',
            params: {
                name: 'echohye',
                age: 18
            }
        })
    }
}

注意params只与name搭配生效,name就是route配置时的name

通过useRoute来接收params参数

import { useRoute } from 'vue-router'
export default {
    setup() {
        const route = useRoute()
        console.log(route.params)
    }
}

2、显示传参query

这些参数会跟在url后。

import { useRouter } from 'vue-router'
export default {
    setup() {
        const userRouter = useRouter()
        userRouter.push({
            path: '/',
            query: {
                name: 'echohye',
                age: 18
            }
        })
    }
}

path和query是一对。

通过useRoute来接收query参数。

import { useRoute } from 'vue-router'
export default {
    setup() {
        const route = useRoute()
        console.log(route.query)
    }
}

二、useRouter的push和replace

push会在浏览器的历史记录中追加一个新的记录,可以通过window.history看到这个记录,当前push时,设置replace为true,也可达到同replace相同的效果。

import { useRouter } from 'vue-router'
export default {
    setup() {
        const userRouter = useRouter()
        userRouter.push({
            path: '/about/1',
            replace: true
        })
    }
}

replace是替换当前的路由。

import { useRouter } from 'vue-router'
export default {
    setup() {
        const userRouter = useRouter()
        userRouter.replace({
            path: '/about/1',
        })
    }
}

三、useRoute

在vue3中,useRoute(接收参数)相当于以前的this.$route,而useRouter(传递参数)相当于this.$router。

import { useRouter, useRoute } from 'vue-router'

export default {
  setup() {
    const router = useRouter()
    const route = useRoute()

    function pushWithQuery(query) {
      router.push({
        name: 'about',
        query: {
          ...route.query,
        },
      })
    }
  },
}

四、Vue Router其它的API

NavigationFailureType 导航失败类型
START_LOCATION 默认开始位置
createMemoryHistory 使用记忆历史模式
createWebHashHistory 创建哈希模式
isNavigationFailure 导航是否失败
onBeforeRouteLeave 导航守卫,setup中使用,在当前位置的组件将要离开时触发。
onBeforeRouteUpdate 导航守卫,setup中使用,在当前位置即将更新时触发。
parseQuery 解析query参数
stringifyQuery 字符串query参数
useLink  将RouterLink 的内部行为作为一个组合式 API 函数公开。



相关推荐

一、生命周期 1、vue2生命周期 beforeCreate #实例初始化之后,进行数据侦听和事件/侦听器的配置之前同步调用 created #实例创建完成后被立即同步调用 beforeMount #

一、使用pnpm新建项目 可以使用npm 或yarn或pnpm来初始化Vite项目 pnpm create vite xxx(项目名称) #选择vue #选择js cd xxx (进入项目目录) #安

一、概述 <script setup> 是在单文件组件(SFC)中使用组合式API的编译时语法糖,解决Vue3.0中setup需要频繁将声明的变量、函数以及import引入的内容通过return向外

一、概述 在vue2中,data函数里返回的值直接为响应式,但在vue3中我们需要使用一些函数才能达到这个效果。 setup函数中拿不到vue的this。 二、常用函数 <template> <d

<script> export default { setup() { const func1= () => { console.log("func1");

缓存页面主要Jul为了防止重复渲染dom,减少加载时间及性能消耗,提高用户体验。 一、旧版的语法 <keep-alive> <router-view v-if="$route.meta.kee

一、在main.js挂载 import { createApp } from 'vue' import App from './App.vue' import router from './route

一、概述 在vue3中没有$refs这个对象,可以使用如下方法 <template> <div><input type="text" ref="txt1" value="hello" /></div>

方式一、全局引入 全局引入element之后事,element已经在app.config.globalProperties添加了全局方法$message,所以可以在组件中直接使用。 方式二、按需引入

方案一: 使用app.config.globalProperties. // 初始化相关 import { createApp } from 'vue' import { nextTick } fro