Итак, я хочу передать реквизиты компоненту 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
. Довольно запутанно.