Quindi voglio passare gli oggetti di scena a un componente Vue, ma mi aspetto che questi oggetti di scena cambino in futuro dall'interno di quel componente, ad esempio quando aggiorno quel componente Vue dall'interno usando AJAX. Quindi sono solo per l'inizializzazione del componente.
Il mio cars-listelemento componente Vue in cui passo gli oggetti di scena con proprietà iniziali 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>
Il modo in cui lo faccio in questo momento che dentro la mia single-carcomponente sto assegnando this.initialPropertiesalla mia this.data.propertiessul created()gancio di inizializzazione. E funziona ed è reattivo.
// 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>
Ma il mio problema è che non so se è un modo corretto per farlo? Non mi causerà dei guai lungo la strada? O c'è un modo migliore per farlo?
dataètwo-wayvincolato, ma non puoi passaredataai componenti, passiprops, ma non puoi cambiare il ricevutopropsné convertirlopropsindata. Allora cosa? Una cosa che ho imparato è che dovresti tramandarepropse innescare eventi. In altrepropsparole , se il componente desidera modificare la ricezione, deve chiamare un evento ed essere "sottoposto a rendering". Ma poi ti rimane unone-waybinding esattamente come React e non vedo l'uso perdataallora. Abbastanza confuso.