私はVueコンポーネントに小道具を渡したいと思いますが、私はこれらの小道具が将来そのコンポーネントの内部から変更されることを期待しています。私がAJAXを使って内部からVueコンポーネントを更新するとき。したがって、コンポーネントの初期化のみに使用されます。Vue.js 2の初期データとして小道具を渡す正しい方法は何ですか?
私はsingle-car
に初期特性との小道具を渡すマイcars-list
Vueのコンポーネント要素:
// 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.data.properties
created()
の初期化にthis.initialProperties
を割り当ててること、それを行う方法フック。それは機能し、反応的です。
// 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>
しかし、私の問題は、それが正しい方法であるかどうかわかりません。それは私に道に沿っていくつかのトラブルを引き起こさないでしょうか?それとももっと良い方法がありますか?
は、これが私の意見でのVueについて最も混乱を招くものである:すべての 'data'は、二way'がバインド'ですが、 'data'を渡すことはできません'props'を渡すことはできますが、受け取った' props'を変更することも、 'props'を' data'に変換することもできません。じゃあ何?私が学んだことの1つは、 'props'を渡してイベントを引き起こすべきだということです。つまり、コンポーネントが受け取った 'props 'を変更したい場合、コンポーネントはイベントを呼び出して「再レンダリング」する必要があります。しかし、あなたはReactとまったく同じように '一方向の束縛 'を残しています。そして私は' data'の使用を見ません。かなり混乱しています。 –
データは、主にコンポーネントの私的使用を目的としています。コンポーネントの文脈の中でその上に置かれているものはすべて反応的であり、バインドすることができます。小道具を使用するコンセプトは、値をコンポーネントに渡しますが、渡された値を変更することによって、コンポーネントが親に状態変化を静かに導入できないようにします。指定したイベントで明示的にする方がよいでしょう。これはVue 1.0から2.0への哲学の変更でした。 –