Vue.js是當前最流行的前端框架之一。而這個框架的核心就是組件化。在Vue.js中,父組件向子組件傳遞數(shù)據(jù)可以使用props。通俗地說,props就是父組件通過屬性的方式向子組件傳遞數(shù)據(jù),而子組件通過props屬性接收并使用這些數(shù)據(jù)。
<template>
<div>
<p>Hello, {{ name }}!</p>
</div>
</template>
<script>
export default {
props: {
name: {
type: String,
default: "World"
}
}
}
</script>
上面的代碼中,父組件傳遞了一個名為name的屬性給子組件。子組件通過props屬性接收并使用這個屬性。要注意的是,props是單向綁定的,即子組件不能修改父組件中的數(shù)據(jù)。
在使用props時,還可以設(shè)置屬性的類型、默認值和驗證規(guī)則。
export default {
props: {
age: {
type: Number, // 限制屬性類型為Number
required: true, // 必填項,如果沒有傳遞將會警告
default: 18, // 默認值為18
validator: function(value) {
// 屬性值必須大于等于0并且小于等于200才會通過驗證
return value >= 0 && value<= 200
}
}
}
}
通過設(shè)置這些屬性,可以讓組件更加靈活、健壯。在父組件中使用子組件時,只需簡單地傳遞props即可:
<template>
<div>
<greeting name="John" />
</div>
</template>
<script>
import Greeting from '@/components/Greeting.vue'
export default {
components: {
Greeting
}
}
</script>
上面的代碼中,父組件通過<greeting>標簽調(diào)用了子組件Greeting,并傳遞了一個名為name的屬性。在子組件中,就可以像之前的例子一樣通過props獲取這個屬性了。