Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

230
Visualizações
La aplicación Nuxt arroja "No se pueden leer las propiedades de undefined" cuando el componente secundario se procesa con un carrusel de Flickity

Estoy tratando de vincular mis propios botones personalizados a un carrusel de flickity en una aplicación nuxt. Mi componente principal establece el valor predeterminado para la direction de apoyo a la left .

 <CarouselBase class="w-screen carousel" :direction="direction"> <items/> </CarouselBase> data() { return { direction: 'left', },

Este es el código para mi componente de carrusel.

 <template> <ClientOnly> <Flickity ref="flickity" :key="keyIncrementer" class="carousel" :class="{ 'carousel--active': active }" :options="computedOptions" > <slot /> </Flickity> </ClientOnly> </template> <script> export default { name: 'BaseCarousel', props: { direction: { type: String, default: '', }, }, mounted() { if (this.direction === 'right') { this.$refs.flickity.next() } else if (this.direction === 'left') { this.$refs.flickity.previous() } }, }

Tengo este archivo vue-flickity.js en mi carpeta de complementos

 import Vue from 'vue' import Flickity from 'vue-flickity' Vue.component('Flickity', Flickity)

Tengo este mensaje de error =>

 Cannot read properties of undefined (reading 'previous')

no se como arreglar eso...

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

La referencia de plantilla flickity aún no está disponible en el gancho mounted , ya que <Flickity> se renderiza en el próximo ciclo.

Espere el siguiente ciclo de procesamiento con la devolución de llamada $nextTick() antes de acceder a la referencia de la plantilla enmounted( mounted() :

 export default { async mounted() { // wait until next render cycle for refs to be available await this.$nextTick() if (this.direction === 'right') { this.$refs.flickity.next() } else if (this.direction === 'left') { this.$refs.flickity.previous() } }, }

manifestación

about 4 years ago · Juan Pablo Isaza Relatório

0

Tener el carrusel como un componente como este

 <template> <ClientOnly> <Flickity ref="flickity"> <slot /> </Flickity> </ClientOnly> </template> export default { name: 'BaseCarousel', }

y usarlo en mi índice con mis propios botones personalizados

 <template> <CarouselBase ref="flickityIndex"> <items for the carousel/> </CarouselBase> <button @click="previous">Custom Previous Button</button> <button @click="next">Custom Next Button</button> </template> export default { methods: { next() { this.$refs.flickityIndex.$refs.flickity.next(); }, previous() { this.$refs.flickityIndex.$refs.flickity.previous(); } } }

Para llamar al siguiente o al anterior, debe comunicarse con flickity a través de ambos $refs refs.

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda