Así que quiero pasar accesorios a un componente de Vue, pero espero que estos accesorios cambien en el futuro desde dentro de ese componente, por ejemplo, cuando actualizo ese componente de Vue desde adentro usando AJAX. Por lo que son solo para la inicialización del componente.
Mi cars-listelemento de componente Vue donde paso accesorios con propiedades iniciales a single-car:
// cars-list.vue
<script>
export default {
data: function() {
return {
cars: [
{
color: 'red',
maxSpeed: 200,
},
{
color: 'blue',
maxSpeed: 195,
},
]
}
},
}
</script>
<template>
<div>
<template v-for="car in cars">
<single-car :initial-properties="car"></single-car>
</template>
</div>
</template>
La forma en que lo hago en este momento es que dentro de mi single-carcomponente estoy asignando this.initialPropertiesa mi this.data.propertiesen el created()gancho de inicialización. Y funciona y es reactivo.
// single-car.vue
<script>
export default {
data: function() {
return {
properties: {},
}
},
created: function(){
this.data.properties = this.initialProperties;
},
}
</script>
<template>
<div>Car is in {{properties.color}} and has a max speed of {{properties.maxSpeed}}</div>
</template>
Pero mi problema con eso es que no sé si esa es la forma correcta de hacerlo. ¿No me causará algunos problemas en el camino? ¿O hay una mejor manera de hacerlo?
dataestátwo-wayvinculado, pero no puede pasardataa componentes, pasaprops, pero no puede cambiar el recibidopropsni convertir elpropsadata. ¿Y que? Una cosa que aprendí es que debes transmitirpropsy desencadenar eventos. Es decir, si el componente quiere cambiar elpropsque recibió, debe llamar a un evento y ser "re-renderizado". Pero luego te quedas con unone-wayenlace exactamente como React y no veo el uso paradataentonces. Bastante confuso.