¿Puedo envolver o incluir una router-link
etiqueta en una button
etiqueta?
Cuando presiono el botón, quiero que me dirija a la página deseada.
button
vue.js
vue-router
Kushagra Agarwal
fuente
fuente
Respuestas:
Puedes usar
tag
prop .fuente
Si bien las respuestas aquí son todas buenas, ninguna parece ser la solución más simple. Después de una investigación rápida, parece que la forma más fácil de hacer que un botón use vue-router es con la
router.push
llamada. Esto se puede usar dentro de una plantilla .vue como esta:Súper simple y limpio. ¡Espero que alguien más encuentre esto útil!
Fuente: https://router.vuejs.org/guide/essentials/navigation.html
fuente
La respuesta de @choasia es correcta.
Alternativamente, puede envolver una
button
etiqueta en unarouter-link
etiqueta como esta:Esto no es tan limpio porque su botón estará dentro de un elemento de enlace (
<a>
). Sin embargo, la ventaja es que tiene un control total sobre su botón, lo que puede ser necesario si trabaja con un marco de interfaz de usuario como Bootstrap.Nunca he usado esta técnica en botones, para ser honesto. Pero hice esto en divs con bastante frecuencia ...
fuente
Gracias a la respuesta de Wes Winder y extendiéndola para incluir parámetros de ruta:
Y reiterando la fuente que proporcionó Wes: https://router.vuejs.org/guide/essentials/navigation.html
fuente
Ahora días (VueJS> = 2.x) harías:
fuente
A partir de Vue-Router 3.1.0, la forma ideal es usar la API de ranuras.
Documentación aquí
La respuesta de @ choasia no permite que se pasen los accesorios al componente
La respuesta de @ Badacadabra causa problemas con los botones de la biblioteca (como los márgenes de los botones)
Así es como funcionaría la solución con la API de ranuras
<router-link to="/about" v-slot="{href, route, navigate}" > <button :href="href" @click="navigate" class='whatever-you-want'> {{ route.name }} </button> </router-link>
fuente
fuente
¡Estoy trabajando en Vue CLI 2 y este me ha funcionado!
fuente
fuente
Un ejemplo usando bootstrap-vue y creando un enlace con la identificación dentro de una fila de la tabla:
Donde
fields
yitems
son los nombres de las columnas y el contenido de la tabla, respectivamente.fuente