Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

146
Vistas
Clonar en profundidad una propiedad importada en Vuejs3

Tengo un objeto que se ve a continuación, que se almacena en un archivo separado y luego se importa como importación desde "ruta" al componente vue.

 const myTemplate = { a:{ key11: undefined, key12: undefined }, b:{ key21: undefined, key22: undefined } }

Dentro del componente estoy usando este objeto myTemplate para crear una nueva propiedad de datos

 <script> data(){ getfields: myTemplate } </script>

En el script, hago un bucle sobre myTemplate y lo asigno con el accesorio que proviene del componente principal que contiene el valor de key11, key12 ,key21 ,... etc.

El propósito de myTemplate es actuar como formato base/estándar que recopila los datos del accesorio entrante.

Más tarde, getfields se repite mediante v-for en la etiqueta <template> para mostrar el contenido

Envío accesorios {key11: somevalue1, key12: somevalue2} a mi componente secundario coincide con las claves dentro del objeto myTemplate usa los métodos dentro de este componente secundario para actualizar las mismas claves en getfields

resultado final:

 { a:{ key11: somevalue1, key12: somevalue2 }, b:{ key21: undefined, key22: undefined } }

Problema:

En el caso de los objetos, JS copia las referencias y también modifica mi objeto myTemplate .

Quiero tener myTemplate intacto y no puedo modificarlo de ninguna manera si se modifican los getfields de obtención.

Lo que he probado:

  1. Deep clone const getfields : JSON.parse(JSON.stringify(myTemplate)) --> no funcionó para mí porque myTemplate es un Object of objects

  2. Probé la importación dinámica con la esperanza de que ayudara, pero no funcionó.

    let self= esta importación("ruta") .then((datos) =>{ self.getfields = data.default })

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Le sugiero que use la biblioteca Lodash para clonar el objeto con _.cloneDeep()

P.ej:

 import _ from 'lodash'

. . .

 const getfields = _.cloneDeep(myTemplate)

Es la biblioteca que uso con Vuejs para evitar esas modificaciones inesperadas en el elemento original porque simplemente lo clona.

Documentación oficial: https://lodash.com/docs/

Si tiene acceso limitado a Internet, debe usar VanillaJs para crear la función de clonación, mire esto https://medium.com/weekly-webtips/deep-clone-with-vanilla-js-5ef16e0b365c

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda