我们经常需要把某种模式匹配到的所有路由,全都映射到同个组件。例如,我们有一个 组件,对于所有 ID 各不相同的用户,都要使用这个组件来渲染。那么,我们可以在 的路由路径中使用“动态路径参数”(dynamic segment) 来达到这个效果:
现在呢,像 和 都将映射到相同的路由。
一个“路径参数”使用冒号 标记。当匹配到一个路由时,参数值会被设置到 ,可以在每个组件内使用。于是,我们可以更新 的模板,输出当前用户的 ID:
你可以看看这个在线例子 。
你可以在一个路由中设置多段“路径参数”,对应的值都会设置到 中。例如:
除了 外, 对象还提供了其它有用的信息,例如, (如果 URL 中有查询参数)、 等等。你可以查看 API 文档 的详细说明。
提醒一下,当使用路由参数时,例如从 导航到 ,原来的组件实例会被复用。因为两个路由都渲染同个组件,比起销毁再创建,复用则显得更加高效。不过,这也意味着组件的生命周期钩子不会再被调用。
复用组件时,想对路由参数的变化作出响应的话,你可以简单地 watch (监测变化) 对象:
或者使用 2.2 中引入的 导航守卫:
常规参数只会匹配被 分隔的 URL 片段中的字符。如果想匹配任意路径,我们可以使用通配符 ():
当使用通配符路由时,请确保路由的顺序是正确的,也就是说含有通配符的路由应该放在最后。路由 通常用于客户端 404 错误。如果你使用了History 模式,请确保正确配置你的服务器。
当使用一个通配符时, 内会自动添加一个名为 参数。它包含了 URL 通过通配符被匹配的部分:
使用 path-to-regexp 作为路径匹配引擎,所以支持很多高级的匹配模式,例如:可选的动态路径参数、匹配零个或多个、一个或多个,甚至是自定义正则匹配。查看它的文档 学习高阶的路径匹配,还有这个例子 展示 怎么使用这类匹配。
有时候,同一个路径可以匹配多个路由,此时,匹配的优先级就按照路由的定义顺序:路由定义得越早,优先级就越高。
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.mushiming.com/mjsbk/13049.html