vue-router中的
注意
H5端 使用,并且必须是 完全采用vue-router开发 的模式下才能使用。
<router-link> 组件支持用户在具有路由功能的应用中 (点击) 导航。 通过 to 属性指定目标地址,默认渲染成带有正确链接的 <a> 标签,可以通过配置 tag 属性生成别的标签.。另外,当目标路由成功激活时,链接元素自动设置一个表示激活的 CSS 类名。
<router-link> 比起写死的 <a href="…"> 会好一些,理由如下:
router-link会守卫点击事件,让浏览器不再重新加载页面。base选项之后,所有的to属性都不需要写 (基路径) 了。v-slot API (3.1.0 新增)
router-link通过一个作用域插槽暴露底层的定制能力。这是一个更高阶的 API,主要面向库作者,但也可以为开发者提供便利,多数情况用在一个类似 NavLink 这样的组件里。在使用 v-slot API 时,需要向 router-link 传入一个单独的子元素。否则router-link将会把子元素包裹在一个span元素内。<router-link to="/about" v-slot="{ href, route, navigate, isActive, isExactActive }"> <NavLink :active="isActive" :href="href" @click="navigate" >{{ route.fullPath }}</NavLink ></router-link>
href:解析后的 URL。将会作为一个a元素的hrefattribute。route:解析后的规范化的地址。navigate:触发导航的函数。会在必要时自动阻止事件,和router-link同理。isActive:如果需要应用激活的 class则为true。允许应用一个任意的 class。isExactActive:如果需要应用精确激活的 class则为true。允许应用一个任意的 class。示例:将激活的 class 应用在外层元素
<a>标签本身,这时你可以在一个router-link中包裹该元素并使用v-slotproperty 来创建链接:
提示<router-link to="/foo" v-slot="{ href, route, navigate, isActive, isExactActive }"> <li :class="[isActive && 'router-link-active', isExactActive && 'router-link-exact-active']" > <a :href="href" @click="navigate">{{ route.fullPath }}</a> </li></router-link>
<a>元素上添加一个target="_blank",则@click="navigate"处理器会被忽略。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>
replace
booleanfalsereplace属性的话,当点击时,会调用router.replace()而不是router.push(),于是导航后不会留下 history 记录。<router-link :to="{ path: '/abc'}" replace></router-link>
append
booleanfalseappend属性后,则在当前 (相对) 路径前添加基路径。例如,我们从/a导航到一个相对路径b,如果没有配置append,则路径为/b,如果配了,则为/a/b<router-link :to="{ path: 'relative/path'}" append></router-link>
tag
string"a"<router-link>渲染成某种标签,例如<li>。 于是我们使用tagprop 类指定何种标签,同样它还是会监听点击,触发导航。<router-link to="/foo" tag="li">foo</router-link><!-- 渲染结果 --><li>foo</li>
active-class
string"router-link-active"linkActiveClass来全局配置exact
booleanfalse包含匹配。 举个例子,如果当前的路径是/a开头的,那么<router-link to="/a">也会被设置 CSS 类名。<router-link to="/">!想要链接使用“精确匹配模式”,则使用exact属性:
可运行<!-- 这个链接只会在地址为 / 的时候被激活 --><router-link to="/" exact></router-link>
event
string | Array<string>'click'声明可以用来触发导航的事件。可以是一个字符串或是一个包含字符串的数组。exact-active-class
string"router-link-exact-active"linkExactActiveClass进行全局配置的<router-view>组件是一个 functional 组件,渲染路径匹配到的视图组件。<router-view>渲染的组件还可以内嵌自己的<router-view>,根据嵌套路径,渲染嵌套组件。 其他属性 (非 router-view 使用的属性) 都直接传给渲染的组件, 很多时候,每个路由的数据都是包含在路由参数中。<transition>和<keep-alive>使用。如果两个结合一起用,要确保在内层使用<keep-alive>:<transition><keep-alive><router-view></router-view></keep-alive></transition>
Props name
string"default"<router-view>设置了名称,则会渲染对应的路由配置中components下的相应组件。查看 命名视图 中的例子
