Tengo una matriz que contiene 7 objetos llamados NewClass.
Cuando realizo algunos cambios en los objetos, el objeto ha perdido su nombre NewClass original.
Como eso:
En arrray[6] perdió el nombre de NewClass.
Entonces, ¿hay alguna forma de que pueda mantener el nombre NewClass para ese objeto?
Aquí está mi función para manejar esta matriz:
useEffect(() => { console.log(layers); if (selectedLayerIndex && layers.length > 0) { console.log( 'x', layers.map((x) => { if (x.feature.properties.editLayerId === selectedLayerIndex) { console.log(x); return (x = { ...x, options: { ...x.options, color: 'cyan', fillColor: 'cyan' }, }); } return x; }) ); }}, [índice de capa seleccionada]);
¡Muchas gracias!
al usar la sintaxis x = {...x, option: {/* some changes to the class */} aquí, cambia la clase a un objeto, lo que provoca la pérdida del nombre de su clase.
Si desea mantenerlo como una clase, utilice instance.attribute en su lugar, vea el siguiente ejemplo
class Demo { constructor(color){ this.color = color; } } var array = [new Demo('red'),new Demo('red'),new Demo('red'),new Demo('red'),new Demo('red'),new Demo('red'),new Demo('red')]; console.log('original array', array); console.log(''); array[6] = {...array[6], color: 'blue'}; console.log(array); // array[6] have been change to a object console.log(''); array[5].color = 'green'; console.log(array); // array[5] is still a class console.log('');