Итак, я хочу передать реквизиты компоненту Vue, но я ожидаю, что эти реквизиты в будущем изменятся изнутри этого компонента, например, когда я обновляю этот компонент Vue изнутри с помощью AJAX. Так что они предназначены только для инициализации компонента.
cars-listЭлемент моего компонента Vue, в котором я передаю реквизиты с начальными свойствами 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>
Как я сделать это прямо сейчас это , что в моем single-carкомпоненте я задаю this.initialPropertiesмой this.data.propertiesна created()инициализации крючок. И работает, и реагирует.
// 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>
Но моя проблема в том, что я не знаю, правильно ли это делать? Разве это не вызовет у меня неприятностей по дороге? Или есть способ лучше?
dataбудетtwo-wayсвязан, но вы не можете перейтиdataк компонентам, вы проходитеprops, но вы не можете изменить принятыйpropsни преобразоватьpropsвdata. И что? Я понял одну вещь: вы должны передаватьpropsи запускать события. То есть, если компонент хочет изменитьpropsполученное, он должен вызвать событие и быть «повторно обработанным». Но тогда у вас остаетсяone-wayпривязка точно такая же, как у React, и я не вижу в ней пользыdata. Довольно запутанно.