Button 在vuejs中的按钮中包含路由器链接标记

Button 在vuejs中的按钮中包含路由器链接标记,button,vue.js,vue-router,Button,Vue.js,Vue Router,我可以将路由器链接标签包装或封装在按钮标签中吗 当我按下按钮时,我希望它将我发送到所需页面 您可以使用 foo @choasia的答案是正确的 或者,您可以将按钮标记包装在路由器链接标记中,如下所示: <router-link :to="{name: 'myRoute'}"> <button id="myButton" class="foo bar">Go!</button> </router-link> 走! 这不是很干净,因为您的按钮

我可以将
路由器链接
标签包装或封装在
按钮
标签中吗

当我按下按钮时,我希望它将我发送到所需页面

您可以使用

foo

@choasia的答案是正确的

或者,您可以将
按钮
标记包装在
路由器链接
标记中,如下所示:

<router-link :to="{name: 'myRoute'}">
  <button id="myButton" class="foo bar">Go!</button>
</router-link>

走!
这不是很干净,因为您的按钮将位于链接元素(
)内。然而,它的优点是您可以完全控制按钮,如果您使用像Bootstrap这样的前端框架,这可能是必要的

老实说,我从来没有在按钮上使用过这种技术。但是我经常在div上这样做…

现在(VueJS>=2.x)您可以做:

<router-link tag="button" class="myClass" id="button" :to="place.to.go">Go!</router-link>
开始!

我正在开发Vue CLI 2,而这一款对我来说很管用

<router-link to="/about-creator">
<button>About Creator</button>
</router-link>

关于创造者

虽然这里的答案都很好,但似乎没有一个是最简单的解决方案。经过一些快速的研究,使用vue路由器的最简单方法似乎是使用
路由器。按
呼叫。这可以在.vue模板中使用,如下所示:

<button @click="$router.push('about')">Click to Navigate</button>
单击导航
超级简单和干净。我希望其他人会觉得这很有用


来源:

感谢Wes Winder的回答,并将其扩展到包括路由参数:

<button @click="$router.push({name: 'about-something', params: { id: 'abc123' },})">Click to Navigate</button>
单击导航

并重申Wes提供的源代码:

从Vue Router 3.1.0开始,理想的方法是使用slots api

@choasia的回答不允许向组件传递道具
@Badacadabra的回答会导致CSS出现问题,尤其是当按钮来自库时(例如:添加边距或定位)

下面是解决方案如何与slots API一起工作


{{route.name}
路由方法使用方法以及路由 1.路由器链路

登录

  • 当点击该类型的按钮时,调用另一个路由
    
    
    
    导出默认值{
    名称:'auth',
    数据(){
    返回{}
    },
    方法:{
    onLogIn(){
    此.router.replace('/dashboard');
    }
    }
    }
    
    使用引导vue并在表行中创建id为的链接的示例:

    <b-table :fields="fields" :items="items">
        <template v-slot:cell(action)="data">
            <router-link :to="`/rounds/${data.item.id}`" v-slot="{ href, route, navigate}">
                <b-button :href="href" @click="navigate" color="primary" style="text">{{ data.item.id }}</b-button>
            </router-link>
        </template>
    </b-table>
    
    
    {{data.item.id}
    

    其中,
    字段
    分别是列名和表内容。

    此外,可以在其中指定tag=“span”,这样就不会应用样式,从而更好地控制外观:按钮文本,但按钮中的单词(例如,在您的示例中为“Go!”)将有蓝色下划线,这是不漂亮的…即使使用像Bootstrap这样的框架,这也几乎没有必要,因为您可以在router link标记中包含标准属性,如class right,当您使用tag=“button”:是的,谢谢!这是最简单的,而且效果很好。我可以随意设计我的按钮。如果你需要使用参数,你也可以这样做:点击导航我的最佳答案如果该按钮接受一些道具怎么办?如何分发?@andcl我有同样的问题,我在下面发布了答案,GitHub上的Vue路由器团队告诉我:我已经投票了将近一年,但我还是尝试了投票!akkk感谢2019年的againFor answers和Vue Router 3.1.0+,向下滚动以获取最新答案如果您不是在版本>=3.1.0上,插槽中的项目将被忽略,不会显示任何错误。链接到文档:我无法下载3.1.0它说最新版本是3.0.0 rcIt不是Vue 3.1.0,是Vue router 3.1.0。谢谢@Anuga,修复了它
        // literal string path
    router.push('home')
    
    // object
    router.push({ path: 'home' })
    
    // named route
    router.push({ name: 'user', params: { userId: '123' } })
    
    // with query, resulting in /register?plan=private
    router.push({ path: 'register', query: { plan: 'private' } })
    
    <script>
    export default {
        name:'auth',
        data() {
            return {}
        },
        methods: {
            onLogIn() {
                this.$router.replace('/dashboard');
            }
        }
    }
    
    <b-table :fields="fields" :items="items">
        <template v-slot:cell(action)="data">
            <router-link :to="`/rounds/${data.item.id}`" v-slot="{ href, route, navigate}">
                <b-button :href="href" @click="navigate" color="primary" style="text">{{ data.item.id }}</b-button>
            </router-link>
        </template>
    </b-table>
    
        // literal string path
    router.push('home')
    
    // object
    router.push({ path: 'home' })
    
    // named route
    router.push({ name: 'user', params: { userId: '123' } })
    
    // with query, resulting in /register?plan=private
    router.push({ path: 'register', query: { plan: 'private' } })