美文网首页
Vue-Router API学习

Vue-Router API学习

作者: A郑家庆 | 来源:发表于2019-05-15 22:34 被阅读0次

<router-link>

<router-link>组件支持用户在具有路由功能的应用中(点击)导航。通过to属性指定目标地址,默认渲染成带有正确链接的<a>标签,可以通过配置tag属性生成别的标签。另外,当目标路由成功激活时,链接元素自动设置一个表示激活的CSS类名。

将激活class应用在外层元素

有时候我们要让激活class应用在外层元素,而不是<a>标签本身,那么可以用<router-link>渲染外层元素,包裹着内层的原生<a>标签:

<router-link tag="li" to="/foo">
    <a>/foo</a>
</router-linnk>

在这种情况下,<a>将作为真实的链接(它会获得正确的href的),而"激活时的CSS类名"则设置到外层的<li>。

<router-link> Props

  • to
  • 类型:string | Location
  • required
    表示目标路由的链接。当被点击后,内部会立刻把to的值传到router.push(),所以这个值是一个字符串或是描述目标位置的对象。
<!-- 字符串 -->
<router-link to="home">Home</router-link>
<!-- 渲染结果 -->
<a href="home">Home</a>

<!-- 使用 v-bind 的 JS 表达式 -->
<router-link v-bind:to="'home'">Home</router-link>

<!-- 不写 v-bind 也可以,就像绑定别的属性一样 -->
<router-link :to="'home'">Home</router-link>

<!-- 同上 -->
<router-link :to="{ path: 'home' }">Home</router-link>

<!-- 命名的路由 -->
<router-link :to="{ name: 'user', params: { userId: 123 }}">User</router-link>

<!-- 带查询参数,下面的结果为 /register?plan=private -->
<router-link :to="{ path: 'register', query: { plan: 'private' }}">Register</router-link>

总结:<router-link to>跟this.$router.push()这两种写法是一样的。to如果前面没有:号表示后面跟的是字符串,如果有冒号表示后面跟的是js表达式。

replace
  • 类型:boolean
  • 默认值:false
    设置replace属性的话,当点击时,会调用router.replace(),而不是router.push(),于是导航后不会留下history记录。
<router-link :to="{path: '/abc'}" replace></router-link>
// 相当于
this.$router.replace()
append
  • 类型:boolean
  • 默认值:false
    设置append属性后,则在当前(相对)路径前添加基路径。例如,我们从/a导航到一个相对路径b,如果没有配置append,则路径为/b,如果配了,则为/a/b
<router-link :to="{path: 'relative/path'}" append></router-link>
tag
  • 类型:string
  • 默认值:'a'
    有时候想要<router-link>渲染成某种标签,例如<li>。于是我们使用tag prop类指定何种标签,同样它还是会监听点击,触发导航。
<router-link to="/foo" tag="li">foo</router-link>
<!--渲染结果-->
<li>foo</li>
active-class
  • 类型:string
  • 默认值:'router-link-active'
    设置链接激活时使用的CSS类名。默认值可以通过路由的构造选项linkActiveClass来全局配置。
exact
  • 类型:boolean
  • 默认值:false
    "是否激活"默认类名的依据是inclusive match(全包含匹配)。举个例子,如果当前的路径是/a开头的,那么<router-link to="/a">也会被设置CSS类名。
    按照这个规则,每个路由都会激活<router-link to="/">!想要链接使用'exact匹配模式',则使用exact属性:
// 这个链接只会在地址为/的时候被激活
<router-link to="/" exact>
event
  • 类型:string | Array
  • 默认值:'click'
    声明可以用来触发导航的事件。可以是一个字符串或是一个包含字符串的数组。
exact
<router-view>

<router-view>组件是一个functional组件,渲染路径匹配到的视图组件。<router-view>渲染的组件还可以内嵌自己的<router-view>,根据嵌套路径,渲染嵌套组件。
其他属性(非router-view使用的属性)都直接传给渲染的组件,很多时候,每个路由的数据都是包含在路由参数中(例如:利用params或query)。
因为它也是个组件,所以可以配合<transition>和<keep-alive>使用。如果两个结合一起用,要确保在内层使用<keep-alive>:

<transition>
  <keep-alive>
    <router-view></router-view>
  </keep-alive>
</transition>

<router-view> Props

name
  • 类型:string
  • 默认值:'default'
    如果<router-view>设置了名称,则会渲染对应的路由配置中components下的相应组件。

https://juejin.im/post/5b82bcfcf265da4345153343

相关文章

网友评论

      本文标题:Vue-Router API学习

      本文链接:https://www.haomeiwen.com/subject/ehhvaqtx.html