Vue: [2.0.0-rc.1] v-for y ref: $ refs ya no son reactivos?

Creado en 17 ago. 2016  ·  3Comentarios  ·  Fuente: vuejs/vue

En 2.0.0-rc.1, una construcción como

<p>Count: {{$refs.components && $refs.components.length}}</p>
<sub-component v-for="item in items" ref="components">

ya no funciona (el recuento permanece en el valor inicial, incluso si items y, por lo tanto, se cambia el recuento de componentes). En v1, las matrices de $ refs se actualizarían de forma reactiva.

No estoy seguro de si esto es un error o una característica, pero # 2873 no parece mencionarlo.

Comentario más útil

@ yyx990803 ¿esto significa que el uso de this.$refs.* en computed también dejará de funcionar en v2 o es solo el uso en plantillas? ¿Tengo que solucionar todo esto con eventos personalizados?

Actualmente paso los resultados de validación de los niños al padre de esta manera.

Todos 3 comentarios

Esto es intencionado, la razón es que $refs ahora se registran / actualizan durante el proceso de renderizado. No se recomienda confiar en $refs en las plantillas, ya que están destinadas solo para el acceso mediante programación en JavaScript.

Actualicé # 2873 para incluir esto.

@ yyx990803 ¿esto significa que el uso de this.$refs.* en computed también dejará de funcionar en v2 o es solo el uso en plantillas? ¿Tengo que solucionar todo esto con eventos personalizados?

Actualmente paso los resultados de validación de los niños al padre de esta manera.

puede usar this.$forceUpdate() y setTimeout para volver a renderizar la vista cuando actualice los datos y descubra que $refs no se actualiza de forma reactiva.

this.fetchSomeShit()
.then((data) => {
  this.data = data
  setTimeout(() => {
    this.$forceUpdate()
  })
})

use setTimeout para asegurarse de que los datos se hayan proporcionado en lo que dicen en la cola de tareas vue

¿Fue útil esta página
0 / 5 - 0 calificaciones