Vue中組件是非常重要的概念,組件化開(kāi)發(fā)可以極大提高代碼的復(fù)用性和維護(hù)性。在Vue中,組件可以通過(guò)定義屬性來(lái)接收父級(jí)組件傳遞過(guò)來(lái)的數(shù)據(jù),也可以通過(guò)設(shè)置屬性來(lái)為子組件提供數(shù)據(jù)。
// 父組件 <template> <child :title="title"></child> </template> <script> import Child from './Child.vue' export default { components: { Child }, data() { return { title: 'Vue 組件設(shè)置屬性' } } } </script> // 子組件 <template> <div>{{ title }}</div> </template> <script> export default { props: { title: String } } </script>
在上述示例中,父組件通過(guò)v-bind將title屬性傳遞給子組件,子組件通過(guò)props接收父組件傳遞過(guò)來(lái)的屬性,并將其顯示出來(lái)。
除了接收父組件傳遞的數(shù)據(jù)外,子組件還可以通過(guò)設(shè)置屬性來(lái)向父組件傳遞數(shù)據(jù)。例如:
// 父組件 <template> <child :title="title" @changeTitle="changeTitle"></child> </template> <script> import Child from './Child.vue' export default { components: { Child }, data() { return { title: 'Vue 組件設(shè)置屬性' } }, methods: { changeTitle(newTitle) { this.title = newTitle } } } </script> // 子組件 <template> <div>{{ title }}</div> <button @click="changeTitle">修改標(biāo)題</button> </template> <script> export default { props: { title: String }, methods: { changeTitle() { this.$emit('changeTitle', '修改后的標(biāo)題') } } } </script>
在上述示例中,子組件通過(guò)$emit觸發(fā)父組件定義的事件changeTitle,并將修改后的標(biāo)題傳遞給父組件,父組件通過(guò)綁定事件來(lái)監(jiān)聽(tīng)子組件的變化,并修改自己的數(shù)據(jù)。
除了props和$emit,Vue組件還提供了其他的屬性和方法用于組件通信和傳值。
在組件開(kāi)發(fā)中,組件之間的通信是非常重要的,通過(guò)合理使用組件屬性可以使組件之間的通信變得更加簡(jiǎn)單和高效。