Vuejs में एक बटन में एक राउटर-लिंक टैग संलग्न करना


82

क्या मैं किसी router-linkटैग में टैग लपेट सकता हूं या संलग्न कर सकता हूं button?

जब मैं बटन दबाता हूं, मैं चाहता हूं कि वह मुझे वांछित पृष्ठ पर ले जाए।


2019 और Vue रूटर में 3.1.0+ उत्तरों के लिए, के लिए साइन अप-टू-डेट जवाब नीचे स्क्रॉल stackoverflow.com/a/58495529/90674
sshow

जवाबों:


139

आप tagप्रोप का उपयोग कर सकते हैं ।

<router-link to="/foo" tag="button">foo</router-link>

6
क्या होगा अगर वह बटन कुछ सहारा ग्रहण करता है? उन्हें कैसे पास किया जाए?
.cl

1
@andcl मैं एक ही सवाल था, मैं नीचे इस सवाल का जवाब है, जो GitHub पर Vue-रूटर टीम यहां से मेरे लिए कहा गया था पोस्ट: github.com/vuejs/vue-router/issues/3003
जेफ Hykin

1
मैंने लगभग एक साल बाद ही इसे उखाड़ने की कोशिश की! akkk धन्यवाद फिर से
अकिन

64

जबकि यहाँ पर उत्तर सभी अच्छे हैं, कोई भी सबसे आसान समाधान नहीं है। कुछ त्वरित शोध के बाद, ऐसा लगता है कि बटन का उपयोग करने का वास्तविक सबसे आसान तरीका router.pushकॉल के साथ वाउ-राउटर है । इसे इस तरह से .vue टेम्पलेट में उपयोग किया जा सकता है:

<button @click="$router.push('about')">Click to Navigate</button>

सुपर सरल और साफ। मुझे आशा है कि किसी और को यह उपयोगी लगता है!

स्रोत: https://router.vuejs.org/guide/essentials/navigation.html


4
हाँ धन्यवाद! यह सबसे सरल था, और पूरी तरह से काम किया। और मैं अपने बटन को स्टाइल कर सकता था लेकिन मैंने चुना। यदि आपको परमेस का उपयोग करने की आवश्यकता है, तो आप कुछ इस तरह भी कर सकते हैं: <बटन @click = "$ router.push ({name: 'about', params: {id: $ path.params.id},})"> क्लिक करें नेविगेट करने के लिए </ बटन>
जो हू

44

@ इकोसिया का जवाब सही है।

वैकल्पिक रूप से, आप buttonटैग को टैग में लपेट सकते हैं router-linkजैसे:

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

यह इतना साफ नहीं है क्योंकि आपका बटन एक लिंक तत्व ( <a>) के अंदर होगा । हालाँकि, लाभ यह है कि आपके बटन पर आपका पूर्ण नियंत्रण होता है, जो बूटस्ट्रैप जैसे फ्रंट-एंड फ्रेमवर्क के साथ काम करने पर आवश्यक हो सकता है।

मैंने इस तकनीक का उपयोग कभी भी बटन पर नहीं किया, ईमानदार होने के लिए। लेकिन मैंने बहुत बार divs पर ऐसा किया है ...


1
इसके अतिरिक्त, कोई व्यक्ति टैग = "स्पैन" को <राऊटर-लिंक> के अंदर निर्दिष्ट कर सकता है, इसलिए यह <a> शैलियों को लागू नहीं करता है जो लुक पर बेहतर नियंत्रण देता है: <राउटर-लिंक = "/ foo" टैग = "स्पैन"> <Button> बटन टेक्स्ट </ Button> </ राऊटर-लिंक>
हमें

लेकिन बटन में शब्द (जैसे "आपके उदाहरण में" जाओ!) में नीली रेखांकन होगा, जो सुंदर नहीं है ...
जर्नी

बूटस्ट्रैप जैसे फ्रेमवर्क के साथ भी, यह शायद ही कभी आवश्यक है, क्योंकि आप राउटर-लिंक टैग में क्लास राइट जैसी मानक विशेषताओं को शामिल कर सकते हैं, और ये रेंडर किए गए तत्व, यहां तक ​​कि एक बटन पर भी लागू होंगे, जब आप टैग = "बटन" का उपयोग करते हैं : <राउटर-लिंक टैग = "बटन" क्लास = "
बीटीएन बीटीएन

11

वेस विंडर के जवाब के लिए धन्यवाद, और इसे मार्ग परियों को शामिल करने के लिए विस्तारित किया गया:

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

और जो स्रोत वेस प्रदान करता है उसे दोहरा रहा है: https://router.vuejs.org/guide/essentials/navis.html


9

अब दिन (VueJS> = 2.x) आप क्या करेंगे:

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

8

वीयू-राउटर 3.1.0 के रूप में, आदर्श तरीका है स्लॉट एपीआई का उपयोग करना।
यहाँ प्रलेखन

@ choasia के उत्तर के लिए सहारा को घटक को पारित करने की अनुमति नहीं है
@ Badacadabra के उत्तर में पुस्तकालय-बटन (जैसे बटन मार्जिन) के साथ समस्याएं होती हैं

यहां बताया गया है कि समाधान एपीआई के साथ कैसे काम करेगा

<router-link
  to="/about"
  v-slot="{href, route, navigate}"
  >
    <button :href="href" @click="navigate" class='whatever-you-want'>
      {{ route.name }}
    </button>
</router-link>

1
यदि आप संस्करण> = 3.1.0 पर नहीं हैं, तो स्लॉट में आइटम को बिना किसी त्रुटि के चुपचाप अनदेखा कर दिया जाएगा। डॉक्स से लिंक करें: router.vuejs.org/api/#v-slot-api-3-1-0
sshow

मैं 3.1.0 डाउनलोड नहीं कर सकता यह कहता है कि नवीनतम 3.0.0 आरसी है
द फ़ूल

यह Vue 3.1.0 नहीं है, यह Vue- राउटर 3.1.0 है।
अनुगा

थैंक्स @Anuga, इसे फिक्स्ड A और थैंक्स @ sshow, डॉक्यूमेंटेशन अब जुड़ा हुआ है।
जेफ हेकिन

3

रूटिंग विधि के साथ-साथ रूटिंग विधि का उपयोग करना 1. राउटर लिंक

<router-link to="/login">Login </router-link>

  1. जब उस बटन पर क्लिक करें जो दूसरे मार्ग को कॉल करता है।
<template>
    <input type="submit" value="Login" @click="onLogIn" class="btn float-right btn-primary">
    </template>
<script>
export default {
    name:'auth',
    data() {
        return {}
    },
    methods: {
        onLogIn() {
            this.$router.replace('/dashboard');
        }
    }
}

0

मैं Vue CLI 2 पर काम कर रहा हूं और इसने मेरे लिए काम किया है!

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

0
    // 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' } })

-1

बूटस्ट्रैप-व्यू का उपयोग करके और तालिका पंक्ति के अंदर आईडी के साथ लिंक बनाने का एक उदाहरण:

<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>

स्तंभ नाम और तालिका सामग्री क्रमशः कहां fieldsऔर कहां itemsहैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.