Vue.js 2.0 路由器 link 在 div 组件中
Vue.js 2.0 router link in a div component
我可以 link 在 vue.js 2.0
中像这样:
<router-link to="home">Home</router-link>
这会编译成一个 a
标签。但是我该如何使用 div?
使用 vue.js 1.0
我是这样做的:
<div v-link="{ name: 'Messages', params: { topic: topic.slug }}">test</div>
这显然不再有效了。
Vue 之道
如果你想让<router-link>
作为另一个标签渲染,在你的情况下div
,你可以使用tag prop来指定渲染到哪个标签,它仍然会监听单击导航事件。
<router-link to="home" tag="div">Home</router-link>
您也可以通过一种纯粹的 HTML 方式来做到这一点:
方式一
<a href="/home">
<div>
Home
</div>
</a>
方式 2
<div style="cursor: pointer;" onclick="window.location='/home';">
Home
</div>
也可以在vue方式中修改第二种方式如下:
<div style="cursor: pointer;" @click="redirectToHome">
Home
</div>
您可以在其中定义 redirectToHome
方法,如下所示:
methods: {
redirectToHome () {
this.$router.push(
{
path: '/home',
}
)
},
嗯,router-link
有一个 tag
道具。您正在寻找这个:
<router-link to="home" tag="div">Home</router-link>
Vue.js 3
免责声明:问题是关于Vue.js 2. 我看到了。
tag
属性is no more
相反,v-slot
如:
<router-link to="/about" custom v-slot="{ navigate }">
<div role="link" @click="navigate">test</div>
</router-link>
custom
阻止创建 a
元素
navigate
是为div
提供的功能,激活导航
role="link"
是可访问性的东西(你可以省略它),但也可以用于 CSS'ing 手形鼠标光标
CSS:
[role="link"]:hover {
cursor: pointer;
}
也可以只保留 a
,因为浏览器现在更擅长处理 display:block
a
,但那是另一回事了。
我可以 link 在 vue.js 2.0
中像这样:
<router-link to="home">Home</router-link>
这会编译成一个 a
标签。但是我该如何使用 div?
使用 vue.js 1.0
我是这样做的:
<div v-link="{ name: 'Messages', params: { topic: topic.slug }}">test</div>
这显然不再有效了。
Vue 之道
如果你想让<router-link>
作为另一个标签渲染,在你的情况下div
,你可以使用tag prop来指定渲染到哪个标签,它仍然会监听单击导航事件。
<router-link to="home" tag="div">Home</router-link>
您也可以通过一种纯粹的 HTML 方式来做到这一点:
方式一
<a href="/home">
<div>
Home
</div>
</a>
方式 2
<div style="cursor: pointer;" onclick="window.location='/home';">
Home
</div>
也可以在vue方式中修改第二种方式如下:
<div style="cursor: pointer;" @click="redirectToHome">
Home
</div>
您可以在其中定义 redirectToHome
方法,如下所示:
methods: {
redirectToHome () {
this.$router.push(
{
path: '/home',
}
)
},
嗯,router-link
有一个 tag
道具。您正在寻找这个:
<router-link to="home" tag="div">Home</router-link>
Vue.js 3
免责声明:问题是关于Vue.js 2. 我看到了。
tag
属性is no more
相反,v-slot
如:
<router-link to="/about" custom v-slot="{ navigate }">
<div role="link" @click="navigate">test</div>
</router-link>
custom
阻止创建a
元素navigate
是为div
提供的功能,激活导航role="link"
是可访问性的东西(你可以省略它),但也可以用于 CSS'ing 手形鼠标光标
CSS:
[role="link"]:hover {
cursor: pointer;
}
也可以只保留 a
,因为浏览器现在更擅长处理 display:block
a
,但那是另一回事了。