Vue: [2.0.0-rc.1] v-for e ref: $ refs não são mais reativos?

Criado em 17 ago. 2016  ·  3Comentários  ·  Fonte: vuejs/vue

Em 2.0.0-rc.1, uma construção como

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

não está mais funcionando (a contagem permanece no valor inicial, mesmo se items e, portanto, a contagem do componente for alterada). Na v1, arrays de $ refs seriam atualizados reativamente.

Não tenho certeza se isso é um bug ou um recurso, mas # 2873 não parece mencioná-lo.

Comentários muito úteis

@ yyx990803 isso significa que usar this.$refs.* em computed propriedades também deixará de funcionar na v2 ou é apenas o uso em modelos? Tenho que resolver tudo isso com eventos personalizados?

Atualmente, passo os resultados da validação dos filhos para os pais assim.

Todos 3 comentários

Isso é intencional - o motivo é que $refs agora estão registrados / atualizados durante o próprio processo de renderização. Não é recomendado confiar em $refs em modelos, pois eles se destinam apenas a acesso programático em JavaScript.

Eu atualizei o nº 2873 para incluir isso.

@ yyx990803 isso significa que usar this.$refs.* em computed propriedades também deixará de funcionar na v2 ou é apenas o uso em modelos? Tenho que resolver tudo isso com eventos personalizados?

Atualmente, passo os resultados da validação dos filhos para os pais assim.

você pode usar this.$forceUpdate() e setTimeout para renderizar novamente a visualização ao atualizar os dados e descobrir que $refs não foi atualizado de forma reativa.

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

use setTimeout para garantir que os dados foram fornecidos no que eles dizem a fila de tarefas vue

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

franciscolourenco picture franciscolourenco  ·  3Comentários

6pm picture 6pm  ·  3Comentários

paceband picture paceband  ·  3Comentários

bdedardel picture bdedardel  ·  3Comentários

loki0609 picture loki0609  ·  3Comentários