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

107
Vistas
¿Por qué una propiedad de objeto se marca como de solo lectura en mi código javascript (Vue)?

Tengo una aplicación Vue 2 con una variable de estado (una matriz de objetos de cuadro) llamada boxes . Tengo una propiedad calculada que extrae un subconjunto de estos cuadros ( nearest_box_linked_boxes ).

Tengo un método que itera a través de las casillas devueltas por nearest_box_linked_boxes y cambia el valor de una propiedad en cada elemento:

 for(let i=0;i<this.nearest_box_linked_boxes.length;i++) { let box = this.nearest_box_linked_boxes[i]; box.object_class = this.$store.state.selected_object_class; box.patch(); }

Este método está devolviendo un error:

 vue.esm.js:648 [Vue warn]: Error in v-on handler: "TypeError: Cannot assign to read only property 'object_class' of object '#<Box>'"

Nunca hice explícitamente ninguno de los objetos de cuadro (o sus propiedades) de solo lectura. Entiendo que no puedo escribir en el objeto de matriz nearest_box_linked_boxes (el objeto de matriz principal) porque es una propiedad calculada, pero pensé que debería ser posible modificar las propiedades de cada elemento de esta matriz.

¿Me estoy encontrando con un problema causado por Vue y las propiedades calculadas aquí, o algo más?

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

0

Siempre debe tratar las propiedades calculadas como "solo lectura", con la excepción de los configuradores calculados.

Si bien es técnicamente posible mutar un objeto devuelto por propiedades calculadas, generalmente es una mala idea. El objeto se reemplazará tan pronto como cambie una dependencia y sus cambios se perderán.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Esto resultó ser mi propio error. La respuesta de Nikola probablemente sea una buena práctica, pero en realidad estaba llamando a Object.freeze en algún momento de mi código y lo había olvidado. Este no fue un efecto secundario de nada relacionado con Vue ni nada realmente misterioso.

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