vue中router-link的详细用法

官网文档地址:https://router.vuejs.org/zh/api/#to

今天项目突然有需求,让vue中的一个页面跳转到另一个页面

// 字符串
<router-link to="apple"> to apple</router-link>
// 对象
<router-link :to="{path:'apple'}"> to apple</router-link>
// 命名路由
<router-link :to="{name: 'applename'}"> to apple</router-link>
//直接路由带查询参数query,地址栏变成 /apple?color=red
<router-link :to="{path: 'apple', query: {color: 'red' }}"> to apple</router-link>
// 命名路由带查询参数query,地址栏变成/apple?color=red
<router-link :to="{name: 'applename', query: {color: 'red' }}"> to apple</router-link>
//直接路由带路由参数params,params 不生效,如果提供了 path,params 会被忽略
<router-link :to="{path: 'apple', params: { color: 'red' }}"> to apple</router-link>
// 命名路由带路由参数params,地址栏是/apple/red
<router-link :to="{name: 'applename', params: { color: 'red' }}"> to apple</router-link>

router-link标签会自动渲染成a标签,

<router-link>组件的属性有:

to 、replace、 append、  tag、  active-class、 exact 、 event、  exact-active-class

1、to(必选参数):类型string/location

2、tag:类型: string    默认值: "a" 

如果想要 <router-link> 渲染成某种标签,例如 <li>。 于是我们使用 tag prop 类指定何种标签,同样它还是会监听点击,触发导航。

<router-link :to="{name:'schedule',query:{aa:'dsd'}}" 
                    tag="li"
                    >跳转</router-link>

如果此时我们想要在这个li标签中添加a标签,如下所示,可以不为a标签添加href属性即可哦

<router-link :to="{name:'schedule',query:{aa:'dsd'}}" 
                    tag="li"
                    >
                    <a>跳转</a>
                    </router-link>

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

 

3、active-class   类型: string    默认值: "router-link-active"

设置 链接激活时使用的 CSS 类名。默认值可以通过路由的构造选项 linkActiveClass 来全局配置。

<router-link :to="{name:'schedule',query:{aa:'dsd'}}" 
                    tag="a"
                    active-class="red"
                    >
                    跳转
                    </router-link>

默认值通过路由的构造选项 linkActiveClass 来全局配置,如下示例:

export default new Router({
  mode:'history',
  linkActiveClass:'is-active',
  routes: [
    {
      path:'/about',
      component:about
    }
]
})

4、exact-active-class   类型: string    默认值: "router-link-exact-active"

配置当链接被精确匹配的时候应该激活的 class。注意默认值也是可以通过路由构造函数选项 linkExactActiveClass 进行全局配置的。

 

5、exact     类型: boolean     默认值: false

按照这个规则,每个路由都会激活<router-link to="/">!想要链接使用 "exact 匹配模式",则使用 exact 属性:

<li><router-link to="/">全局匹配</router-link></li>
<li><router-link to="/" exact>严格匹配</router-link></li>

简单点说,第一个的话,如果地址是/aa,或/aa/bb,……都会匹配成功,

但加上exact,只有当地址是/时被匹配,其他都不会匹配成功

6、event       类型: string | Array<string>    默认值: 'click'          声明可以用来触发导航的事件。可以是一个字符串。

<router-link to="/document" event="mouseover">document</router-link>

如果我们不加event,那么默认情况下是当我们点击document的时候,跳转到相应的页面,但当我们加上event的时候,就可以改变触发导航的事件,比如鼠标移入事件

7、replace   类型: boolean  默认值: false   

设置 replace 属性的话,当点击时,会调用 router.replace() 而不是 router.push(),于是导航后不会留下 history 记录。

 

8、append    类型: boolean   默认值: false     设置 append 属性后,则在当前 (相对) 路径前添加基路径

 

9、另外,加上target属性为"_blank",依然可以打开一个新的页面

 

<router-link :to="{name:'schedule',query:{aa:'dsd'}}" 
                    tag="a"
                    append
                    target="_blank"
                    >
                    跳转
                    </router-link>

 

posted @ 2019-10-29 14:49  古墩古墩  Views(34306)  Comments(0Edit  收藏  举报