添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接


目录


router的基本使用


main.js


App.vue


router文件夹下的index.js(抽离router)


动态传参+编程式导航


App.vue


user.vue组件


嵌套路由


路由传参,懒加载


router的index.js


Info组件


User组件


App.vue


守卫钩子(全局+独享+组件内的守卫)


登录页


路由


About.vue


补充 :


解决重复点击路由报错:


$route和$router的区别:


router的基本使用

main.js

挂载路由

import Vue from 'vue'
import App from './App'
// 默认导入router文件夹下的内容
import router from './router'
Vue.config.productionTip = false
/* eslint-disable no-new */
new Vue({
  el: '#app',
  router,//挂载路由,把路由注入为Vue对象方便使用
  render: h => h(App)
})

App.vue

路由跳转的两种方法

router-link 其他属性:


to:用于指定跳转的路径

tag:可以指定router-link标签之后渲染成什么html元素

replace(没有返回记录):在history模式下指定router-link使用的是replaceState,而不是一个pushState()

active-class:设置对应路由匹配成功时,会给当前选中元素设置一个active-class属性类名

<template>
  <div id="app">
    <!-- 利用router-view进行显示路由渲染的组件,切换的是挂载的组件,其他内容不会发生改变-->
    <router-view></router-view>
    <!-- 默认router-link是被渲染成a标签的 -->
    <!-- to点击后面的路径就会渲染,tag跟要渲染成的html标签 replace不能返回上一页-->
    <!-- 当某一个路由处于活跃状态的话vue会自动添加class,也可以用active-class来改类名 -->
    <!-- <router-link to="/home" tag="button" replace active-class="active"
      >首页</router-link>
    <router-link to="/about" replace>关于</router-link> -->
    <button @click="homeClick">首页</button>
    <button @click="aboutClick">关于</button>
</template>
<script>
export default {
  name: "App",
  methods: {
    homeClick() {
      //  通过代码也可以修改路径
      // vue定义每个元素里都有一个router属性
      // push = pushState点击完之后还可以返回上一步
      // this.$router.push('/home')
      this.$router.replace("/home");
    aboutClick() {
      this.$router.replace("/about");
</script>

router文件夹下的index.js(抽离router)

路由模式:

hash:历史模式,不会制造页面刷新
history:不会有历史,不会制造页面刷新

注意:路由重复点击会报错,降级router插件到到3.5版本以下

此处可以配置活跃路由的类名,如果多个router-link都要类名,可以在路由中统一配置

1.// 引用文件
import Vue from 'vue'
import Router from 'vue-router'
import Home from '../components/Home'
import About from '../components/About'
// 1.通过Vue.use(插件),安装插件
Vue.use(Router)
// export default(导出) 将Router对象传入到vue实例
export default new Router({
  // 2.创建Router对象
  // 配置路由和组件之间的映射关系
  // routes是固定写法
  routes: [
      path:'',
      // 重定向
      redirect:'/home'
      // 定义路径
      path: '/home',
      name: 'HelloWorld',
      // component显示
      component: Home
      path:'/about',
      component:About //组件名
  mode:'history',
  // 全局配置激活路由的class类名,处与活跃(动态)就会用上这个类名
  linkActiveClass:'active'
})

动态传参+编程式导航

路由路径后加/:id就可以变成动态路由

App.vue

user.vue组件

嵌套路由

页面中使用this.$route:获取活跃的组件;

this.$router:获取router整个路由

路由传参,懒加载

router的index.js

Info组件

User组件

App.vue

守卫钩子(全局+独享+组件内的守卫)

登录页

路由

About.vue

补充 :

解决重复点击路由报错:

1.在路由页引入以下代码:

2.或者直接降低router版本到3.5以下 。


$route和$router的区别:

$router为VueRouter实例,想要导航到不同URL,则使用$router.push方法

$route为当前router跳转对象里面可以获取name、path、query、params等

小编公_号:前端老实人;期待各位小伙伴加入同学们一起学习的队伍讨论哦❤

image.png

element-ui报错[Vue warn]: Invalid prop: custom validator check failed for prop “index“.一个符号解决问题 网络协议必知基础知识(图文并茂) Ant Design TreeSelect树形选择器格式化数据以及禁用父节点 element-ui报错[Vue warn]: Invalid prop: custom validator check failed for prop “index“.一个符号解决问题 网络协议必知基础知识(图文并茂) Ant Design TreeSelect树形选择器格式化数据以及禁用父节点