Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

67
Vistas
Vue 3: envuelva todos los elementos dentro de una ranura con un componente personalizado usando una función de renderizado

Estoy tratando de construir mi propio componente ordenable . Quiero pasar una lista de elementos a su ranura predeterminada. El componente clasificable debe envolver todos los elementos pasados con un componente v-draggable personalizado.

 <v-sortable handle=".handle"> <template :key="index" v-for="(item, index) in items"> <some-complex-component :item="item"></some-complex-component> </template> </v-sortable>

Ahora, con mi componente v-sortable , estoy tratando de envolver todos los nodos dados dentro de la ranura predeterminada con un componente v-draggable personalizado. Mi componente v-sortable se ve así:

 import { h } from 'vue'; export default { name: 'v-sortable', props: { handle: { type: String, required: false, default: () => { return null; } }, }, render () { const draggableItems = this.$slots.default().map(slotItem => h('v-draggable', { handle: this.handle }, [slotItem]) ) return draggableItems; } }

Esto funciona como se esperaba, excepto que mi componente personalizado v-draggable no se representará como un componente vue. Todos los elementos se envolverán en etiquetas html llamadas <v-draggable> . ¿Cómo tendría que proceder para analizar realmente el componente v-draggable como componente Vue?

about 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Intente importarlo y registrarse y usarlo directamente:

 import { h } from 'vue'; import VDraggable from 'path/to/v-draggable' export default { name: 'v-sortable', props: { handle: { type: String, required: false, default: () => { return null; } }, }, render () { const draggableItems = this.$slots.default().map(slotItem => h(VDraggable, { handle: this.handle }, [slotItem]) ) return draggableItems; } }

Se recomienda pasar elementos como accesorios y usarlos directamente dentro de la función de renderizado:

 <v-sortable handle=".handle" :items="items"> </v-sortable>

componente hijo:

 import { h } from 'vue'; import VDraggable from 'path/to/v-draggable' export default { name: 'v-sortable', props: { items:{ type:Array, default: () =>[] }, handle: { type: String, required: false, default: () => { return null; } }, }, render () { const draggableItems = this.items.map(slotItem => h(VDraggable, { handle: this.handle }, [item]) ) return draggableItems; } }
about 4 years ago · Santiago Trujillo Denunciar

0

El componente puede especificarse explícitamente en la función de representación:

 h(VDraggable, ...)

El componente registrado globalmente que no está disponible para la importación (por ejemplo, de bibliotecas de terceros) se puede resolver a partir de un nombre con resolveComponent .

about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda