Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

119
Visualizações
¿Cómo manipular DOM tanto después del renderizado del lado del servidor como del lado del cliente?

Aquí está mi código (es un componente Vue en una aplicación Nuxt):

 <template> <div class="comment-editor" v-if="loggedIn"> <div class="leftside"> <!-- <client-only> --> <textarea ref="editor" v-model="content" placeholder="your comment" ></textarea> <!-- </client-only> --> <Message v-bind="message" /> </div> <Button text="Publish" color="main" v-if="message.type != 'loading'" @click="publish" /> </div> <div class="notLoggedIn" v-else> You should <nuxt-link to="/signup">register</nuxt-link> or <nuxt-link to="/login">log in</nuxt-link> to write comments. </div> </template> <script> export default { data() { return { content: "", }; }, mounted() { const tx = document.querySelector("textarea"); fh(tx); tx.style.overflowY = "hidden"; tx.addEventListener("input", function () { fh(this); }); function fh(x) { while (x.style.height + "" != x.scrollHeight + "px") x.style.height = x.scrollHeight + "px"; } }, }; </script>

Lo que puede ver en la función "montada" se usa para cambiar dinámicamente la altura de un área de texto. Funciona correctamente cuando el componente se procesa en el lado del cliente (es decir, cuando se navega desde otra página), pero la aplicación falla después de SSR (cuando se abre directamente la página con el componente). ¿Cómo hacer que ese código funcione correctamente en ambos casos?

about 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Debe usar estilos dinámicos en lugar de manipulaciones DOM directas.

Por ejemplo, <textare :style="{ height: computedHeight }" />

Consultehttps://vuejs.org/v2/guide/class-and-style.html#Object-Syntax-1

about 4 years ago · Santiago Trujillo Relatório

0

El problema era que cuando se montaba el componente, inicialmente, el elemento class="leftside" no formaba parte del dom (debido a que loginIn era igual a false). La solución fue mover el elemento class="leftside" y la función montada() a un componente separado.

about 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda