Emit和Prop是Vue.js的核心模塊,用于讓組件之間進(jìn)行通信。
在Vue.js中,父子組件之間的通信是基于"props down, events up"的原則實(shí)現(xiàn)的。即父組件通過(guò)props向下傳遞數(shù)據(jù),子組件通過(guò)emit事件向上通知父組件發(fā)生了某些行為。
例如,父組件向子組件傳遞一個(gè)名為"message"的prop,子組件將這個(gè)prop渲染為一個(gè)文本內(nèi)容并顯示在頁(yè)面中。當(dāng)用戶在子組件中進(jìn)行操作時(shí),子組件會(huì)emit一個(gè)名為"update"的事件,父組件監(jiān)聽(tīng)到該事件后,將更新子組件所展示的數(shù)據(jù)。
// 子組件 <template> <div> {{ message }} <button @click="update">更新消息</button> </div> </template> <script> export default { props: ["message"], methods: { update() { this.$emit("update"); } } }; </script> // 父組件 <template> <div> <ChildComponent :message="message" @update="handleUpdate" /> </div> </template> <script> import ChildComponent from "./ChildComponent"; export default { components: { ChildComponent }, data() { return { message: "Hello, world!" }; }, methods: { handleUpdate() { this.message = "Updated message"; } } }; </script>
在上面的代碼中,子組件通過(guò)props傳遞了一個(gè)名為message的數(shù)據(jù)給父組件,父組件在渲染子組件時(shí)通過(guò)事件監(jiān)聽(tīng)的方式監(jiān)聽(tīng)到了"update"事件,并在其回調(diào)函數(shù)中更新了message的值,從而實(shí)現(xiàn)了父子組件之間的雙向通信。