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.
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
Comentario más útil
@ yyx990803 ¿esto significa que el uso de
this.$refs.*
encomputed
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.