如何利用vue组件 动态生成router-link

发布网友 发布时间:2022-04-22 03:44

我来回答

3个回答

懂视网 时间:2022-04-22 15:12

vue中的router-link属性有以下属性值:to相当于herf标签用于添加跳转内容,replace用于页面切换时不会留下历史记录以及tag将router-link渲染成相应的标签等等

在vue中,vue.js与 vue-router 两者结合在一起可以实现简单的单页面应用,其中<router-link>是一个组件,主要用于设置导航的链接来实现不同的HTML内容切换。接下来在文章中将为大家具体介绍这一属性,具有一定的参考价值,希望对大家有所帮助。

【推荐课程:Vue教程】

router-link标签

在vue1.0版本中的仍然用a标签来实现链接跳转功能,但链接地址与html中不同,它是采用v-link属性来控制。但是在2.0版本中a标签就被替换成了rount-link属性,但是最终在页面上显示还是会被渲染成a标签。接下来将要详细的介绍该属性中的各个值的用法

router-link属性值详解

(1)":to" 属性值

这个属性值就相当于a标签中的"herf"属性,后面的内容为跳转链接的内容

<router-link :to="http://www.gxlcms.com/">PHP中文网</router-link>

相当于

<a href="http://www.gxlcms.com/">PHP中文网</a>

(2)"replace" 属性值

replace属性值在routre-link标签中添加的主要目的在于页面切换时不会留下历史记录

<router-link :to="http://www.gxlcms.com/" replace></router-link>

(3)"tag" 属性值

具有tag属性的router-link都会被渲染成相应的标签

<router-link :to="/http://www.gxlcms.com/" tag="li">PHP中文网</router-link>

相当于

<li>PHP中文网</li>

此时的页面中的li同样会起到a标签的作用,因为vue会自动为其绑定点击事件,并跳转页面

(4)"active-class"属性值

这个属性是用于设置激活链接时class属性,也就是当前页面及所有与当前页面地址所匹配的的链接都会被添加class属性

<router-link :to="http://www.gxlcms.com/" active-class="u-link--Active">PHP中文网</router-link>

active-class属性的默认值是router-link-active,所以如果没有设置,就会被渲染为这个class

(5)“append”属性值

设置 append 属性后,则在当前 (相对) 路径前添加基路径。例如,我们从 /a 导航到一个相对路径 b,如果没有配置 append,则路径为 /b,如果配了,则为 /a/b

<router-link :to="{ path: 'relative/path'}" append></router-link>

使用router-link代替a标签的好处

router-link属性在页面中可以渲染为任何元素,比如上述代码中渲染成li标签依然实现了跳转效果。另外当我们点击a标签时可能会重载页面,但是使用router-link后此标签会被vue所监听,跳转链接时就不会刷新页面了。

总结:

热心网友 时间:2022-04-22 12:20

首先,Vue.component的第二个参数是一个配置对象,你这个写法连JS语法都不符合。
其次,template配置应该是一个HTML代码的字符串,所以改成:
Vue.component('sidebar', {
template: '<div><router-link to="/">Go to Foo</router-link><router-link to="/bar">Go to Bar</router-link></div>'
});
Update

(参考资料:https://router.vuejs.org/en/e...)

针对你说的都是引入的情况,代码做如下修改:先按如下顺序依次引入Vue和Vue-router

<script src="https://unpkg.com/vue/dist/vue.js"></script>
<script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
然后加入如下JS

// 在Vue里面注册VueRouter,这样可以在Vue里面使用`<router-link>`
Vue.use(VueRouter);

// 下面这一段是路由设置和应用根元素绑定,具体可以参照官方文档
// -----------------------------------
var routes = [ ... ]; // 这个是路由的配置,你自己写

// 定义路由VueRouter控件,其中,`{routes}`是`{routes: routes}`的简写,可能是ES6里面的新语法
var router = new VueRouter({routes});

// 创建Vue对象
var app = new Vue({
el: '#app', // 假设绑定的根元素为#app
router, // 此处也是简写
});
然后可以使用Vue.component()语句了,此时,因为注册了Vue-Router组件,<router-link>可以被识别。

热心网友 时间:2022-04-22 13:38

比如有这么个router需要跳转
const router = new VueRouter({
  routes: [
    {
      path: '/user/:userId',
      name: 'user',
      component: User
    }
  ]
})


你的router-link可以这么写

<router-link :to="{ name: 'user', params: { userId: 123 }}">User</router-link>


还可以用编程在代码里写,效果也一样:

router.push({ name: 'user', params: { userId: 123 }})


具体的推荐你看下vue router的官网,里面有详细的说明和例子

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com