Vue: Hoisting-up vnode - aviso de loop infinito

Criado em 15 set. 2017  ·  3Comentários  ·  Fonte: vuejs/vue

Versão

2.4.4

Link de reprodução

http://jsfiddle.net/vjvMp/2019/

Passos para reproduzir

O layout preciso dos componentes está no JSFiddle. A montagem dos componentes é por algum motivo muito frágil o que me faz pensar que se trata de um bug. Por exemplo, se eu remover o componente layout que não deve afetar o código, o aviso desaparece: http://jsfiddle.net/vjvMp/2020/

O que é esperado?

Para que a fenda na criança seja içada até o pai e renderizada acima da criança sem problemas.

O que realmente está acontecendo?

O filho é renderizado, mas há um aviso de loop de atualização infinita.

Comentários muito úteis

  • Você está retornando API de data , isso torna o objeto while api reativo
  • Quando você define os vnodes na API, o Vue tenta converter o vnode
  • Em 2.4.3 os nós de slot agora são clonados profundamente na re-renderização para corrigir alguns bugs, isso faz com que a função de renderização registre todo o vnode como dependência reativa, portanto, a mutação do vnode aciona uma re-renderização.

Por enquanto, sua solução alternativa poderia ser Object.freeze o vnode ou não tornar a injeção de API reativa.

Todos 3 comentários

O código estava funcionando na v2.4.2 ; parece que foi introduzido na v2.4.3.

  • Você está retornando API de data , isso torna o objeto while api reativo
  • Quando você define os vnodes na API, o Vue tenta converter o vnode
  • Em 2.4.3 os nós de slot agora são clonados profundamente na re-renderização para corrigir alguns bugs, isso faz com que a função de renderização registre todo o vnode como dependência reativa, portanto, a mutação do vnode aciona uma re-renderização.

Por enquanto, sua solução alternativa poderia ser Object.freeze o vnode ou não tornar a injeção de API reativa.

A correção funciona muito bem! Obrigado @ yyx990803

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

Questões relacionadas

julianxhokaxhiu picture julianxhokaxhiu  ·  3Comentários

wufeng87 picture wufeng87  ·  3Comentários

fergaldoyle picture fergaldoyle  ·  3Comentários

robertleeplummerjr picture robertleeplummerjr  ·  3Comentários

lmnsg picture lmnsg  ·  3Comentários