Então, eu quero passar adereços para um componente Vue, mas espero que eles mudem no futuro de dentro desse componente, por exemplo, quando eu atualizar esse componente Vue de dentro usando AJAX. Portanto, eles são apenas para inicialização do componente.
cars-listElemento de componente My Vue onde passo adereços com propriedades iniciais para 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>
A maneira que eu fazê-lo agora que dentro do meu single-carcomponente estou atribuindo this.initialPropertiesao meu this.data.propertiesno created()gancho de inicialização. E funciona e é reativo.
// 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>
Mas meu problema com isso é que não sei se essa é uma maneira correta de fazer isso. Isso não vai me causar alguns problemas ao longo da estrada? Ou existe uma maneira melhor de fazer isso?
dataestátwo-wayvinculado, mas você não pode passardatapara componentes, você passaprops, mas não pode alterar o recebidopropsnem converterpropsparadata. Então o que? Uma coisa que aprendi é que você deve transmitirpropse disparar eventos. Ou seja, se o componente quiser alterar opropsrecebido, deve chamar um evento e ser "renderizado". Mas então você fica com umaone-wayligação exatamente como React e não vejo utilidade paradataela. Muito confuso.