因此,我想将道具传递给Vue组件,但是我希望这些道具将来从该组件内部进行更改,例如,当我使用AJAX从内部更新该Vue组件时。因此它们仅用于组件的初始化。
我的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
那时的用途。相当混乱。