返回顶部
首页 > 资讯 > 精选 >vue路由遍历生成复数router-link的方法是什么
  • 730
分享到

vue路由遍历生成复数router-link的方法是什么

2023-07-04 14:07:30 730人浏览 泡泡鱼
摘要

这篇文章主要讲解了“Vue路由遍历生成复数router-link的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“vue路由遍历生成复数router-link的方法是什么”吧!需求:

这篇文章主要讲解了“Vue路由遍历生成复数router-link的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“vue路由遍历生成复数router-link的方法是什么”吧!

需求:顶部导航栏控制下方内容栏,实现页面内切换。

毫无疑问,vue-router很适合这样的需求,实现起来也并不复杂:

1、main.js:

import VueRouter from 'vue-router'Vue.use(VueRouter);

2、定义(路由)组件:

import songList from './components/songList.vue' const Bar = { template: '<div>no.2</div>' }const Baz = { template: '<div>no.3</div>' }const Fun = { template: '<div>no.4</div>' }

这里的组件也可以从外部导入,说起来应该是正确的做法,博主为了演示方便才直接写在里面了...

3、定义路由:

const routes = [ { path: '/新歌', component: songList }, { path: '/排行', component: Bar }, { path: '/榜单', component: Baz }, { path: '/歌手', component: Fun }, { path: '*', redirect: '/新歌' }]

注意,最后设置了一个重定向路由,目的是当路径不属于以上任意一个时,匹配到‘新歌'页面;说白了也就是设置初始页的路由。

4、创建router实例:

const router = new VueRouter({ routes//等价routes: routes})

5、创建和挂载根实例:

new Vue({ router, el: '#app', render: h => h(App)})

navBar.vue:

在组件页面上,按照常理应该分别写出具体数目的导航标签,类似下面这样:

<router-link to="/新歌">新歌</router-link><router-link to="/排行">排行</router-link><router-link to="/榜单">榜单</router-link><router-link to="/歌手">歌手</router-link>

但实际运用上有个小问题,就是像这样重复样式的路由入口真的有必要每个都写一遍么?唯一的区别仅仅是to属性不同?

万一今后碰到十几、二十个怎么办?

于是换个思路,尝试遍历数组来生成复数个路由入口:

<span v-for="(bar, index) in title" :key="index"> <router-link to=""> {{ bar }} </router-link></span>

大致如上,title是一个所有名目的数组:[ 新歌,排行,榜单,歌手,... ],Index索引用来绑定key值。现在唯一的问题 就是to也就是路由入口路径该怎么写?

由于每个都会渲染成不同出口,所以不能写成绝对路径。

方案一:将main.js中的路径都变成title中的名称,再在to中用拼接字符串实现动态匹配。

实际操作下来发现并不可取,因为在html中只会识别to=“”中双引号内的内容,更不能使用‘+'这类js才能识别的拼接符号。

方案二:使用编程式导航,

methods: { linkChange: function (bar) {  this.$router.push({ path: '/'+bar}); } }<span v-for="(bar, index) in title" :key="index"> <router-link to="" @click.native="linkChange(bar)"> {{ bar }} </router-link></span>

这种方法将路径写在methods中就可以使用每次遍历数组获得的值,从而实现动态匹配。

为什么要给click事件加上native后缀?

这里是个很典型的router-link的小坑,因为浏览器会把router-link渲染成a标签,那么在router-link上添加的事件都会失效。

解决方案就是加上.native后缀来阻止原生事件。

但这种方式也有个很严重的BUG,即在遍历中使用编程式导航,会导致所有入口响应这个点击事件!

具体说来就是当用户点击某个路由,所有的入口都会被vue识别为选中路由,页面逻辑可能看不出来,

但只要加个.router-link-active { background: #f4f4f4 }这种vue给当前路由默认添加的class设置一个背景色,就能发现所有路由入口元素

一起变色!

这个bug在不使用遍历,依次给span设置路由的时候不会出现,具体原因希望有大神可以告知。

所以此方案也只能放弃。

方案三:

在html中绑定to属性,

<span v-for="(bar, index) in title" :key="index"> <router-link :to="{ path: '/'+bar }"> {{ bar }} </router-link></span>

想了太多复杂的方案,反而忽略了最基本的绑定to属性,

最方便的地方在于,大括号内既可以像我一样写完整路径,也可以直接写成:to="{ path: bar }",效果是一样的。

而且相比前面的方法,可以省去额外的点击事件,利用其本身的路径特性来完成。

到目前为止,需求可以算是基本完成,但细节还能不能更完美一点呢?

就拿这个例子来说,我们用span标签包裹了渲染成a标签的router-link,有时候我们想要选中的标签字体变成蓝色,同时span下面出现蓝色边框,

提高用户体验。那么使用.router-link-active改变a标签颜色是最方便的了,问题是上一级的span该如何添加样式呢?

似乎不添加额外class或id这种标识是无法实现功能的,但我在vue官网上看到这么一句话:“有时候我们要让 "激活时的CSS类名" 应用在外层元素,而不是 <a> 标签本身,那么可以用 <router-link> 渲染外层元素,包裹着内层的原生 <a> 标签”。

代码如下:

<router-link tag="span" :to="{ path: bar }" v-for="(bar, index) in title" :key="index">  <a>  {{ bar }}  </a> </router-link>

使用tag标签改变其渲染元素,包裹a标签。如此一来,.router-link-active添加span底边框,.router-link-active a 来改变字体颜色。不需要使用额外标记也能完成样式需求。

为什么要使用Vue

Vue是一款友好的、多用途且高性能的javascript框架,使用vue可以创建可维护性和可测试性更强的代码库,Vue允许可以将一个网页分割成可复用的组件,每个组件都包含属于自己的HTML、CSS、JavaScript,以用来渲染网页中相应的地方,所以越来越多的前端开发者使用vue。

感谢各位的阅读,以上就是“vue路由遍历生成复数router-link的方法是什么”的内容了,经过本文的学习后,相信大家对vue路由遍历生成复数router-link的方法是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: vue路由遍历生成复数router-link的方法是什么

本文链接: https://lsjlt.com/news/345795.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • vue路由遍历生成复数router-link的方法是什么
    这篇文章主要讲解了“vue路由遍历生成复数router-link的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“vue路由遍历生成复数router-link的方法是什么”吧!需求:...
    99+
    2023-07-04
  • vue路由如何遍历生成复数router-link
    小编给大家分享一下vue路由如何遍历生成复数router-link,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!需求:顶部导航栏...
    99+
    2024-04-02
  • vue路由跳转router-link清除历史记录的方法
    这篇文章主要介绍了vue路由跳转router-link清除历史记录的方法的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇vue路由跳转router-link清除历史记录的方法文章都会有所收获,下面我们一起来看看吧...
    99+
    2023-06-29
  • vue router路由跳转方法是什么
    本文小编为大家详细介绍“vue router路由跳转方法是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“vue router路由跳转方法是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。通过router-...
    99+
    2023-07-06
  • Vue中的Router路由是什么
    这篇文章主要讲解了“Vue中的Router路由是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Vue中的Router路由是什么”吧!一、前端路由的概念与原理(1)什么是路由路由(英文:r...
    99+
    2023-06-30
  • vue-router的路由守卫是什么
    这篇文章主要介绍“vue-router的路由守卫是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“vue-router的路由守卫是什么”文章能帮助大家解决问题。 ...
    99+
    2024-04-02
  • vue路由跳转router-link清除历史记录的三种方式(总结)
    目录路由跳转router-link清除历史记录官方文档提供了如下三种方式vue跳转后不记录历史记录路由跳转router-link清除历史记录 1.在vue项目中说起路由跳转,我们最先...
    99+
    2024-04-02
  • vue-router实现路由懒加载的方法是什么
    这篇文章主要讲解了“vue-router实现路由懒加载的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“vue-router实现路由懒加载的方法是什么”吧!在Web应用程序中,系统的...
    99+
    2023-07-04
  • vue router动态路由清除方式是什么
    这篇文章主要介绍“vue router动态路由清除方式是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“vue router动态路由清除方式是什么”文章能帮助大家解决问题。ro...
    99+
    2023-06-30
  • php遍历数组的方法是什么
    这篇文章主要讲解了“php遍历数组的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“php遍历数组的方法是什么”吧!两种方法:1、利用for循环,语法为“for($i=0;$i<...
    99+
    2023-06-29
  • jquery遍历array数组的方法是什么
    这篇文章主要讲解了“jquery遍历array数组的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“jquery遍历array数组的方法是什么”吧!...
    99+
    2024-04-02
  • php foreach遍历数组的方法是什么
    PHP中使用foreach语句来遍历数组。示例代码如下:```$colors = array("Red", &q...
    99+
    2023-09-26
    php
  • Vue动态设置路由参数的方法是什么
    这篇文章主要介绍“Vue动态设置路由参数的方法是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Vue动态设置路由参数的方法是什么”文章能帮助大家解决问题。1.使用this.$router.go(...
    99+
    2023-07-04
  • c++ set遍历的方法是什么
    在C++中,可以使用迭代器或者范围循环来遍历Set。1. 使用迭代器遍历Set:```cpp#include #include in...
    99+
    2023-09-15
    c++
  • php遍历数组的两种方法是什么
    本文操作环境:Windows10系统、PHP7.1版、Dell G3电脑。php遍历数组的两种方法是什么在php中,通常使用for或foreach来遍历数组。新建一个php文件,命名为test.php,用于讲解php遍历数组常用的两种方法。...
    99+
    2019-08-24
    php
  • php遍历数组的四种方法是什么
    本教程操作环境:windows7系统、PHP7.1版、DELL G3电脑方法1:使用for语句遍历for循环会将控制循环次数的变量预先定义在for语句中,因此for循环语句能够按照已知的循环次数进行循环操作,适用于明确知道脚本需要运行的次数...
    99+
    2019-10-24
    php 数组 遍历数组
  • PHP多维数组遍历的方法是什么
    PHP多维数组遍历的方法有以下几种:1. 使用嵌套循环:使用两个或多个嵌套的foreach循环来遍历多维数组。外层循环用于遍历第一维...
    99+
    2023-10-11
    PHP
  • java二维数组遍历的方法是什么
    遍历二维数组可以使用嵌套的循环来实现,具体步骤如下: 使用嵌套的循环遍历二维数组的行和列。 外层循环控制行的索引,内层循环控制列的...
    99+
    2024-04-02
  • Vue实现路由嵌套的方法是什么
    这期内容当中小编将会给大家带来有关Vue实现路由嵌套的方法是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。嵌套路由又称子路由,在实际应用中,通常由多层嵌套的组件组合而成。(其实就是套娃操作罢了,跟后端...
    99+
    2023-06-25
  • es6新增的遍历方法是什么
    这篇文章主要介绍es6新增的遍历方法是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! 新增的遍历方法有:1、findIndex(),可遍历数组,查找匹...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作