ดังนั้นฉันต้องการส่งอุปกรณ์ประกอบฉากไปยังส่วนประกอบ 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
ตอนนั้น ค่อนข้างสับสน