Je veux donc passer des accessoires à un composant Vue, mais je m'attends à ce que ces accessoires changent à l'avenir de l'intérieur de ce composant, par exemple lorsque je mets à jour ce composant Vue de l'intérieur en utilisant AJAX. Donc, ils ne servent qu'à l'initialisation du composant.
Mon cars-listélément de composant Vue où je passe des accessoires avec des propriétés initiales à 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 façon dont je le fais en ce moment ce que l' intérieur de mon single-carélément j'assignant this.initialPropertiesà mon this.data.propertiessur le created()crochet d'initialisation. Et cela fonctionne et est réactif.
// 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>
Mais mon problème avec cela est que je ne sais pas si c'est une bonne façon de le faire? Cela ne me causera-t-il pas des ennuis sur la route? Ou y a-t-il une meilleure façon de le faire?
dataesttwo-waylié, mais vous ne pouvez pas passerdataaux composants, vous passezprops, mais vous ne pouvez pas changer le reçupropsni le convertirpropsendata. Alors quoi? Une chose que j'ai apprise est que vous devez transmettrepropset déclencher des événements. C'est-à-dire que si le composant souhaite modifier cepropsqu'il a reçu, il doit appeler un événement et être «rendu». Mais ensuite, il vous reste uneone-wayliaison exactement comme React et je ne vois pas l'utilité pour celadata. Assez déroutant.