返回

Vue.js Router Link: 跳转与传递参数的利器

前端

利用 router-link 轻松实现单页应用路由跳转

在单页应用中,路由是至关重要的,它负责页面之间的导航。在 Vue Router 中,router-link 组件是实现路由跳转的利器,它提供了简单且灵活的方式在不同页面之间切换。本文将深入探讨 router-link 的用法,涵盖其基本用法、参数传递方式,并以常见问题解答的形式解决常见疑虑。

router-link 基本用法

要使用 router-link,首先需要在 Vue Router 的路由配置中定义目标路由。路由配置是一个对象数组,其中每个对象代表一个路由条目,包括路径、组件、名称等属性。例如:

const routes = [
  {
    path: '/destination',
    name: 'destination',
    component: Destination
  }
];

在 Vue 组件中,使用 router-link 组件跳转到目标路由非常简单,只需要在标签中指定 to 属性,其值为目标路由的名称或路径即可。

<router-link to="destination">跳转到目标路由</router-link>

点击此链接后,浏览器将跳转到 /destination 路由,并加载 Destination 组件。

router-link 参数传递

除了基本跳转外,router-link 还支持参数传递,这在动态路由场景中非常有用。参数传递有两种方式:

1. Query 参数传递

query 参数传递是最常见的方式,通过在 router-link 的 to 属性中使用 ? 符号将参数附加到 URL 后面。参数的格式为 key=value,多个参数可以用 & 符号连接。例如:

<router-link to="/destination?id=123">跳转到目标路由,并传递参数</router-link>

点击此链接后,浏览器将跳转到 /destination?id=123 路由,目标组件可以通过 $route.query 对象访问参数。

// 在目标组件中
export default {
  computed: {
    id() {
      return this.$route.query.id;
    }
  }
};

2. Props 参数传递

props 参数传递是另一种参数传递方式,在 router-link 的 to 属性中使用 props 属性传递参数。props 的格式为一个对象,其中键是参数名,值是参数值。例如:

<router-link :to="{ name: 'destination', params: { id: 123 } }">跳转到目标路由,并传递参数</router-link>

点击此链接后,浏览器将跳转到 /destination/123 路由,目标组件可以通过 $route.params 对象访问参数。

// 在目标组件中
export default {
  computed: {
    id() {
      return this.$route.params.id;
    }
  }
};

router-link 进阶用法

除了基本用法外,router-link 还提供了一些进阶用法,例如:

  • 命名路由: 使用名称而不是路径作为 to 属性的值,简化路由定义。
  • 相对路由: 使用 ... 来表示相对当前路由的路径。
  • 外部链接: 使用 target="_blank" 属性将链接打开到新窗口。
  • 自定义类名: 使用 class 属性添加自定义类名到 router-link 元素。

常见问题解答

1. 如何在 router-link 中传递数组作为参数?

使用 query 参数传递,使用 JSON.stringify() 将数组转换为字符串。

2. 如何防止 router-link 触发浏览器后退按钮?

使用 event.preventDefault() 方法阻止事件的默认行为。

3. 如何在 router-link 中禁用导航?

设置 disabled 属性为 true

4. 如何获取当前激活的路由?

使用 this.$route 访问当前激活的路由对象。

5. 如何监听路由变化?

使用 $router.beforeEach() 钩子在每次路由变化时执行代码。

结论

router-link 是 Vue Router 中一个功能强大的组件,它提供了简单且灵活的方式在单页应用中实现路由跳转和参数传递。掌握了 router-link 的用法,可以大大提高单页应用的开发效率和用户体验。