Chcę więc przekazać właściwości do komponentu Vue, ale spodziewam się, że te właściwości zmienią się w przyszłości od wewnątrz tego komponentu, np. Kiedy zaktualizuję ten komponent Vue od wewnątrz za pomocą AJAX. Więc służą tylko do inicjalizacji komponentu.
Mój cars-listelement komponentu Vue, w którym przekazuję rekwizyty z właściwościami początkowymi do 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>
Sposób, w jaki to zrobić teraz to, że w moim single-carskładnika jestem przypisanie this.initialPropertiesdo mojego this.data.propertiesna created()haku inicjalizacji. Działa i jest reaktywny.
// 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>
Ale mój problem z tym polega na tym, że nie wiem, czy to jest właściwy sposób? Czy to nie sprawi mi kłopotów na drodze? Czy jest na to lepszy sposób?
datajesttwo-wayzwiązana, ale nie można przejśćdatado części składowych, można przejśćprops, ale nie można zmienić odebranypropsani przekonwertowaćpropsdodata. Więc co? Nauczyłem się, że należy przekazywaćpropsi wywoływać zdarzenia. Oznacza to, że jeśli komponent chce zmienićpropsotrzymaną wiadomość, powinien wywołać zdarzenie i zostać „ponownie wyrenderowany”. Ale wtedy zostaje cione-waywiązanie dokładnie takie jak React i nie widzę wtedy zastosowaniadata. Dość zagmatwane.