Vì vậy, tôi muốn chuyển các đạo cụ cho một thành phần Vue, nhưng tôi hy vọng các đạo cụ này sẽ thay đổi trong tương lai từ bên trong thành phần đó, ví dụ khi tôi cập nhật thành phần Vue đó từ bên trong bằng AJAX. Vì vậy, chúng chỉ để khởi tạo thành phần.
cars-listPhần tử thành phần Vue của tôi nơi tôi chuyển các đạo cụ có thuộc tính ban đầu cho 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>
Cách tôi làm điều đó ngay bây giờ nó rằng bên trong của tôi single-carphần tôi gán this.initialPropertiescho tôi this.data.propertiestrên created()móc khởi tạo. Và nó hoạt động và phản ứng.
// 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>
Nhưng vấn đề của tôi với điều đó là tôi không biết đó có phải là một cách làm đúng hay không? Nó sẽ không gây cho tôi một số rắc rối trên đường đi? Hoặc là có một cách tốt hơn để làm điều đó?
datađangtwo-waybị ràng buộc, nhưng bạn không thể vượt quadatacác thành phần, bạn vượt quaprops, nhưng bạn không thể thay đổi đượcpropsvà cũng không chuyển đổipropsđểdata. Rồi sao? Một điều mà tôi học được là bạn nên truyềnpropslại và kích hoạt các sự kiện. Đó là, nếu thành phần muốn thay đổipropsnó nhận được, nó sẽ gọi một sự kiện và được "kết xuất". Nhưng sau đó bạn bị bỏ lại với mộtone-wayràng buộc giống hệt như React và tôi không thấy sử dụng chodatalúc đó. Khá khó hiểu.