Vue动态路由

Vue动态路由,第1张

我们经常需要把某种模式匹配到的所有路由,全都映射到同个组件。例如,我们有一个 User 组件,对于所有 ID 各不相同的用户,都要使用这个组件来渲染。那么,我们可以在 vue-router 的路由路径中使用“动态路径参数”(dynamic segment) 来达到这个效果:

现在呢,像 /user/foo 和 /user/bar 都将映射到相同的路由。

一个“路径参数”使用冒号 : 标记。当匹配到一个路由时,参数值会被设置到 this$routeparams ,可以在每个组件内使用。于是,我们可以更新 User 的模板,输出当前用户的 ID:

你可以看看这个 在线例子 。

你可以在一个路由中设置多段“路径参数”,对应的值都会设置到 $routeparams 中。例如:

除了 $routeparams 外, $route 对象还提供了其它有用的信息,例如, $routequery (如果 URL 中有查询参数)、 $routehash 等等。你可以查看 API 文档 的详细说明。

提醒一下,当使用路由参数时,例如从 /user/foo 导航到 /user/bar , 原来的组件实例会被复用 。因为两个路由都渲染同个组件,比起销毁再创建,复用则显得更加高效。 不过,这也意味着组件的生命周期钩子不会再被调用

复用组件时,想对路由参数的变化作出响应的话,你可以简单地 watch (监测变化) $route 对象:

或者使用 22 中引入的 beforeRouteUpdate 导航守卫 :

常规参数只会匹配被 / 分隔的 URL 片段中的字符。如果想匹配 任意路径 ,我们可以使用通配符 ( ):

当使用 通配符 路由时,请确保路由的顺序是正确的,也就是说含有 通配符 的路由应该放在最后。路由 { path: '' } 通常用于客户端 404 错误。如果你使用了 History 模式 ,请确保 正确配置你的服务器 。

当使用一个 通配符 时, $routeparams 内会自动添加一个名为 pathMatch 参数。它包含了 URL 通过 通配符 被匹配的部分:

vue-router 使用 path-to-regexp 作为路径匹配引擎,所以支持很多高级的匹配模式,例如:可选的动态路径参数、匹配零个或多个、一个或多个,甚至是自定义正则匹配。查看它的 文档 学习高阶的路径匹配,还有 这个例子 展示 vue-router 怎么使用这类匹配。

有时候,同一个路径可以匹配多个路由,此时,匹配的优先级就按照路由的定义顺序:谁先定义的,谁的优先级就最高。

可以的。this$routename

就可以获取到对应的name了

主要有以下几个步骤:

(1)

设置好路由配置

routermap({

'/history/:deviceid/:dataid':

{

name:

'history',

//

give

the

route

a

name

component:

{

}

}

})

这里有2个关键点:

a)给该路由命名,也就是上文中的

name:

'history',

b)在路径中要使用在路径中使用冒号开头的数字来接受参数,也就是上文中的

:deviceid,

:dataid;

(2)在v-link中传递参数;

history

这里的123,456都可以改用变量

在一些情况下,一个页面的path路径可能是不确定的,比如我们进入到用户界面时,希望是如下的路径:

- /user/aaa 或者 user/bbb 。

3、在 appvue 中的使用

4、 uservue 组件中获取到 userId ,这里的 userId 对应的就是路由映射中的参数

路由传参数。在很多时候我们需要路由上面传递参数,比如新闻列表页,我们需要传递新闻ID,给新闻详细页。

1新闻列表页模板

<template id="news">

<div>

<h2>新闻列表</h2>

<ul>

<li>

<router-link to="/news/001">新闻001</router-link>

</li>

<li>

<router-link to="/news/002">新闻002</router-link>

</li>

</ul>

</div>

</template>1234567891011121312345678910111213

我们访问/news/001,跳转到新闻详细页,展示001的这条新闻。

2新闻详细页组件准备

<template id="NewsDetail">

<div>

新闻详细页面

<span>{{$routeparamsid}}</span>

</div>

</template>123456123456

$routeparamsid获取路由上的参数

在js里定义路由组件:

//新闻详细页组件

const NewsDetail = { template: '#NewsDetail' };1212

3定义路由,增加一个路由

{ path: '/news/:id', component: NewsDetail },11

访问/news/001或者/news/002就展示新闻详细页

4全部代码如下:

<!DOCTYPE html>

<html>

<head>

<title></title>

<meta charset="utf-8">

<script src=">

以上就是关于Vue动态路由全部的内容,包括:Vue动态路由、vue-router 可以根据 URL 来获取 routers 定义的 name 属性吗、动态Vue-router(路由)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9488737.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-28
下一篇2023-04-28

发表评论

登录后才能评论

评论列表(0条)

    保存