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

102
Vistas
la función personalizada cambia el valor de los datos de Vue.js como efecto secundario

Tengo una función dentro de la propiedad de métodos que toma passedData del método data() , realiza algunos cambios en el objeto y almacena el nuevo valor en una constante

esto de alguna manera causa un efecto secundario que también cambia el valor de passedData . ¿Cuál es la causa y cómo puedo prevenir eso?

this.passedData: -->

 {"propss":"value"} App.vue?3dfd:61 {"propss":"propss : value"} App.vue?3dfd:49 {"propss":"propss : value"} App.vue?3dfd:61 {"propss":"propss : propss : value"} 

 new Vue({ el: "#app", data() { return { passedData: { propss: "value" }, }; }, methods: { displayData() { console.log(JSON.stringify(this.passedData)); const root = d3.hierarchy(this.passedData, function(d) { if(typeof d == "object") return Object.keys(d).filter(d=>d!="$name").map(k=>{ if(typeof d[k] == "object") d[k].$name = k; else d[k] = k + " : " + d[k]; return d[k]; }); }) console.log(JSON.stringify(this.passedData)); }, }, });
 <script src="https://cdnjs.cloudflare.com/ajax/libs/d3/5.7.0/d3.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script> <div id="app"> <button type="button" @click="displayData">display</button> </div>

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

0

El problema que enfrenta aquí es que los datos en vue.js son reactivos. Por lo tanto, cambiar los datos almacenados en cualquier lugar también cambiará la fuente de los datos.

Si desea cambiar algo sin enfrentar problemas debido a la reactividad, debe asignar estos datos sin referencia según lo necesite. Pequeño ejemplo:

 // Passing your reactive data passedData: { propss: "value" }, newData: {} // Passing data to new property and reactivity this.newData = this.passedData this.newData.propss = 'newValue' // this will change passedData.propss to "newValue" too // Assign Data without reference this.newData = JSON.parse(JSON.stringify(this.passedData))

Si ahora cambia newData , no afectará a passedData , ya que JSON.parse(JSON.stringify(this.passedData)) creó un nuevo estado sin referencia al original.

Tenga en cuenta que esto solo debería ser una solución alternativa, no es una gestión de estado adecuada.

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