Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

163
Views
al recargar el componente vuejs, los 'accesorios' se actualizan, pero la referencia a 'accesorios' a través del alcance 'este' sigue haciendo referencia a los accesorios previamente cargados

Tengo un componente vuejs que muestra una publicación y sus respuestas.

Cuando el usuario quiere ver la publicación, hace clic en el título de la publicación y abre la publicación en una ventana modal llamando al componente que obtiene los datos de la publicación y los representa.

Tengo este extraño problema de reactividad que es un poco difícil de explicar. Se explica mejor con un caso de uso.

  1. Haga clic para abrir la Publicación 1 (todo está bien)
  2. Cierra ese modal.
  3. Haga clic para abrir la publicación 2 (suceden cosas extrañas).

Si hago referencia a la publicación en la plantilla (por ejemplo, {{post.comments}} , muestra toda la información para la publicación 2 sin problemas

PERO si hago referencia a this.post.comments en el bloque de script, está representando información de Post 1.

Entonces parece que los accesorios de la post sí se están actualizando, pero this.post parece hacer referencia a la primera publicación abierta, independientemente de si paso una nueva publicación como accesorios.

Si voy más allá y paso la Publicación 3 al componente... post hace referencia a la Publicación 3, pero esta this.post aún se completa con la Publicación 1.

Entonces, los accesorios se están actualizando, pero este alcance no se actualiza cada vez que recuerdo el componente con un nuevo accesorio que se está pasando.

Aquí está mi código vuejs (o la parte superior relevante de todos modos).

 module.exports = { props: ['post'], data: function(){ return { userHasVoted: this.post.userHasVoted, votes: this.post.voters.length, showReply: false, replyPlaceholder: "Post reply here", reply: { comment_of: this.post._id, channel: this.post.channel, post: null, tags: [] }, tagify: null, showByIndex: null } }, methods: { .....

Gracias de antemano por cualquier ayuda para desentrañar esto.

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Encontrado el problema/solución.

Parece que aunque estaba vinculando el componente a una propiedad en el elemento principal, volver a cargar o cambiar la propiedad principal no vuelve a montar ni cambia el alcance local en el componente. Entonces, para evitar esto, necesitaba usar la tecla: al llamar al componente.

Así que esta fue mi llamada original al componente (pasando un objeto de publicación)

 <post-item-full v-bind:post="post"></post-item-full>

Todo lo que tenía que hacer era agregar la clave y pasar una clave única (en este caso, el _id del objeto que pasa... pero podría ser cualquier cosa única para la publicación.

 <post-item-full v-bind:post="post" :key="post._id"></post-item-full>

Y ahora trabajando encontrar.

No estoy seguro de si esta es la solución correcta, pero funciona sin demasiado alboroto.

Gracias a esta publicación por la solución: https://michaelnthiessen.com/force-re-render/

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!