在vue中this.$emit有哪些作用,事件監控具體含義,以及這些子組件能封裝哪些功能組件

this.$emit 的作用

this.$emit 的作用是觸發一個自定義事件,并將數據傳遞給父組件。父組件可以通過 v-on(或 @)監聽這個事件,并在事件觸發時執行相應的處理函數。

this.content 的作用

this.content 是子組件的 props,它從父組件接收數據。在你的代碼中,this.content 表示子組件當前的 content 值。當你調用 this.$emit(‘update’, this.content) 時,你實際上是將當前的 content 值傳遞給父組件。

監控事件的具體含義

在你的代碼中,update 事件的作用是通知父組件子組件的 content 值發生了變化。父組件可以在這個事件的處理函數中接收這個值,并根據需要進行處理

子組件

<script>let Message = Vue.extend({props: ['content'],template: `<div><h3>{{content}}</h3><button @click="updateContent">Update Content</button></div>`,methods: {updateContent: function () {// 觸發一個名為 'update' 的事件,并將當前的 content 值傳遞給父組件this.$emit('update', this.content);}}});Vue.component('message', Message);
</script>

父組件

<script>let vm = new Vue({el: "#container",data: {title: 'this is a title2',subTitle: 'this is a subtitle2'},methods: {gettitle() {// 調用子組件的 updateContent 方法this.$refs.title.updateContent();},updateTitle: function (content) {// 接收子組件傳遞的 content 值,并更新父組件的 title 數據console.log('title updated:', content);this.title = content;},updateSubTitle: function (content) {// 接收子組件傳遞的 content 值,并更新父組件的 subTitle 數據console.log('Sub-title updated:', content);this.subTitle = content;}}});
</script>
  1. 子組件觸發事件

在子組件中,updateContent 方法被調用時,會通過 this.$emit(‘update’, this.content) 觸發一個名為 update 的事件,并將當前的 content 值傳遞給父組件。
這里的 this.content 是子組件的 props,它從父組件接收數據。

  1. 父組件監聽事件

在父組件中,通過 v-on:update=“updateTitle” 和 v-on:update=“updateSubTitle” 監聽子組件觸發的 update 事件。
當子組件觸發 update 事件時,父組件的 updateTitle 或 updateSubTitle 方法會被調用,并接收子組件傳遞的 content 值。
父組件更新數據
在父組件的 updateTitle 和 updateSubTitle 方法中,接收子組件傳遞的 content 值,并更新父組件的 title 和 subTitle 數據。
由于 Vue 的響應式系統,更新父組件的數據會自動觸發子組件的更新。

  1. 總結

this.$emit(‘update’, this.content):子組件觸發一個名為 update 的事件,并將當前的 content 值傳遞給父組件。
this.content:子組件的 props,表示子組件當前的 content 值。
父組件監聽事件:父組件通過 v-on:update 監聽子組件的 update 事件,并在事件處理函數中接收子組件傳遞的 content 值,更新父組件的數據。
通過這種方式,子組件可以通知父組件其 content 值發生了變化,父組件可以據此更新自己的數據,從而實現父子組件之間的數據同步。

在前端開發中,子組件通常用于封裝和復用具有特定功能的代碼塊,以提高代碼的可維護性和可復用性。子組件可以用于多種功能,以下是一些常見的使用場景

  1. 表單控件
    子組件可以封裝各種表單控件,如輸入框、選擇框、日期選擇器等。這些控件可以獨立于父組件使用,方便在多個地方復用。
<template><div class="custom-input"><input:value="value"@input="$emit('input', $event.target.value)":placeholder="placeholder"/></div>
</template><script>
export default {props: {value: String,placeholder: String}
};
</script><style scoped>
.custom-input input {border: 1px solid #ccc;padding: 5px;border-radius: 4px;
}
</style>
  1. 數據展示
    子組件可以用于展示數據,如列表、表格、卡片等。這些組件可以接收數據作為 props,并負責渲染和格式化這些數據。
<template><ul class="user-list"><li v-for="user in users" :key="user.id">{{ user.name }} - {{ user.email }}</li></ul>
</template><script>
export default {props: {users: Array}
};
</script><style scoped>
.user-list {list-style: none;padding: 0;
}
.user-list li {margin: 5px 0;
}
</style>
  1. 交互式組件
    子組件可以封裝復雜的交互邏輯,如模態框、下拉菜單、工具提示等。這些組件可以獨立管理自己的狀態,并通過事件與父組件通信。
<template><div v-if="visible" class="modal"><div class="modal-content"><slot></slot><button @click="close">Close</button></div></div>
</template><script>
export default {props: {visible: Boolean},methods: {close() {this.$emit('update:visible', false);}}
};
</script><style scoped>
.modal {position: fixed;top: 0;left: 0;width: 100%;height: 100%;background: rgba(0, 0, 0, 0.5);display: flex;justify-content: center;align-items: center;
}
.modal-content {background: white;padding: 20px;border-radius: 5px;
}
</style>
  1. 布局組件
    子組件可以用于封裝布局結構,如導航欄、側邊欄、頁腳等。這些組件可以獨立管理自己的樣式和結構,方便在多個頁面中復用。
<template><nav class="navbar"><ul><li v-for="item in items" :key="item.text"><a :href="item.link">{{ item.text }}</a></li></ul></nav>
</template><script>
export default {props: {items: Array}
};
</script><style scoped>
.navbar {background: #333;color: white;
}
.navbar ul {list-style: none;padding: 0;display: flex;
}
.navbar li {margin: 0 10px;
}
.navbar a {color: white;text-decoration: none;
}
</style>
  1. 功能組件
    子組件可以封裝特定的功能邏輯,如分頁、搜索框、文件上傳等。這些組件可以獨立管理自己的狀態,并通過事件與父組件通信。
<template><div class="pagination"><button :disabled="currentPage <= 1" @click="prevPage">Previous</button><span>Page {{ currentPage }} of {{ totalPages }}</span><button :disabled="currentPage >= totalPages" @click="nextPage">Next</button></div>
</template><script>
export default {props: {total: Number,pageSize: Number},data() {return {currentPage: 1};},computed: {totalPages() {return Math.ceil(this.total / this.pageSize);}},methods: {prevPage() {if (this.currentPage > 1) {this.currentPage--;this.$emit('update:currentPage', this.currentPage);}},nextPage() {if (this.currentPage < this.totalPages) {this.currentPage++;this.$emit('update:currentPage', this.currentPage);}}}
};
</script><style scoped>
.pagination {display: flex;align-items: center;
}
.pagination button {margin: 0 5px;
}
</style>
  1. 動畫和過渡
    子組件可以封裝動畫和過渡效果,如淡入淡出、滑動、折疊等。這些組件可以獨立管理自己的動畫狀態,并通過事件與父組件通信。
<template><div class="accordion"><div class="accordion-header" @click="toggle"><slot name="header"></slot></div><div class="accordion-body" v-show="isOpen"><slot name="body"></slot></div></div>
</template><script>
export default {data() {return {isOpen: false};},methods: {toggle() {this.isOpen = !this.isOpen;}}
};
</script><style scoped>
.accordion {border: 1px solid #ccc;margin: 10px 0;
}
.accordion-header {background: #f0f0f0;padding: 10px;cursor: pointer;
}
.accordion-body {padding: 10px;
}
</style>

子組件在前端開發中具有多種用途,可以封裝表單控件、數據展示、交互式組件、布局組件、功能組件以及動畫和過渡效果。通過合理使用子組件,可以提高代碼的可維護性和可復用性,使項目結構更加清晰。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/83185.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/83185.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/83185.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

前端流行框架Vue3教程:16. 組件事件配合`v-model`使用

組件事件配合v-model使用 如果是用戶輸入&#xff0c;我們希望在獲取數據的同時發送數據配合v-model 來使用&#xff0c;幫助理解組件間的通信和數據綁定。 &#x1f9e9; 第一步&#xff1a;創建子組件&#xff08;SearchComponent.vue&#xff09; 這個組件用于處理用戶的搜…

《Navicat之外的新選擇:實測支持國產數據庫的SQLynx核心功能解析》

數據庫工具生態的新變量 在數據庫管理工具領域&#xff0c;Navicat長期占據開發者心智。但隨著國產數據庫崛起和技術信創需求&#xff0c;開發者對工具的兼容性、輕量化和本土化適配提出了更高要求。近期體驗了一款名為SQLynx的國產數據庫管理工具&#xff08;麥聰旗下產品&am…

AgenticSeek開源的完全本地的 Manus AI。無需 API,享受一個自主代理,它可以思考、瀏覽 Web 和編碼,只需支付電費。

?一、軟件介紹 文末提供程序和源碼下載 AgenticSeek開源的完全本地的 Manus AI。無需 API&#xff0c;享受一個自主代理&#xff0c;它可以思考、瀏覽 Web 和編碼&#xff0c;只需支付電費。這款支持語音的 AI 助手是 Manus AI 的 100% 本地替代品 &#xff0c;可自主瀏覽網頁…

vue3.0的name屬性插件——vite-plugin-vue-setup-extend

安裝 這個由于是在開發環境下的一個插件 幫助我們支持name屬性 所以需要是-D npm i vite-plugin-vue-setup-extend -D在pasckjson中無法注釋每個插件的用處 可以在vscode中下載一個JsonComments這樣可以在json中添加注釋方便日后維護和查閱API 引入 在vite.config.js中 im…

Linux基礎 -- 在內存中使用chroot修復eMMC

Linux基礎 – 在內存中使用chroot修復eMMC 概述 本教程將介紹如何在Linux系統中&#xff0c;使用chroot在內存中構建一個臨時系統&#xff0c;并在不依賴原有系統的情況下修復eMMC&#xff08;如/dev/mmcblk2&#xff09;磁盤。該方法適用于嵌入式系統修復、磁盤清理以及離線…

人工智能、深度學習、機器學習的聯系與區別

定義 人工智能&#xff08;AI - Artificial Intelligence&#xff09; &#xff1a;是研究、開發用于模擬、延伸和擴展人的智能的理論、方法、技術及應用系統的一門新的技術科學。它旨在讓計算機能夠像人類一樣思考、學習和決策&#xff0c;涉及到諸如計算機視覺、自然語言處理…

web第二次課后作業--設計一個注冊登錄系統

一、頁面展示 登錄頁面 提交頁面 二、代碼 2.1 登錄頁面 <% page language"java" contentType"text/html; charsetUTF-8"pageEncoding"UTF-8"%><html> <head><meta http-equiv"Content-Type" content"…

電腦桌面便簽哪個好?2025年電腦免費用的便簽軟件推薦

我們都知道&#xff0c;一個優秀的桌面便簽軟件可以成為提高效率的得力助手。無論是記錄臨時靈感、管理待辦事項&#xff0c;還是提醒重要日程&#xff0c;合適的便簽工具都能讓您的數字生活更加有序。本文將為您介紹2025年最值得推薦的免費電腦桌面便簽軟件&#xff0c;從Wind…

【SPIN】用Promela驗證順序程序:從斷言到SPIN實戰(SPIN學習系列--2)

你寫了一段自認為“天衣無縫”的程序&#xff0c;但如何確保它真的沒有bug&#xff1f;靠手動測試&#xff1f;可能漏掉邊界情況&#xff1b;靠直覺&#xff1f;更不靠譜&#xff01;這時候&#xff0c;Promela SPIN組合就像程序的“顯微鏡”——用形式化驗證技術&#xff0c;…

LabVIEW中樣條插值實現及應用

在 LabVIEW 編程環境下&#xff0c;B - 樣條插值是處理數據擬合與曲線平滑的重要工具。它憑借靈活的特性和良好的數學性質&#xff0c;在眾多工程領域中發揮著關鍵作用&#xff0c;能夠高效地根據離散數據點生成平滑連續的曲線&#xff0c;為數據分析和處理提供了有力支持。 一…

【油藏地球物理正演軟件ColchisFM】基于數據驅動的油藏參數疊前地震反演研究進展

科吉思基于油藏地球物理參數的正演軟件ColchisFM&#xff0c;有機融合了巖石物理正演與地震正演&#xff0c;具有良好的適用性和便捷性&#xff0c;在業內已經廣泛使用。當用戶在做正演模擬的同時&#xff0c;自然會聯想到是否可以直接開展油藏地球物理參數反演呢&#xff1f;答…

互聯網大廠Java求職面試:AI與大模型集成的云原生架構設計

互聯網大廠Java求職面試&#xff1a;AI與大模型集成的云原生架構設計 引言 在現代互聯網企業中&#xff0c;AI與大模型技術的應用已經成為不可或缺的一部分。特別是在短視頻平臺、電商平臺和金融科技等領域&#xff0c;如何高效地將大模型集成到現有的云原生架構中是一個巨大…

Web GIS可視化地圖框架Leaflet、OpenLayers、Mapbox、Cesium、ArcGis for JavaScript

Mapbox、OpenLayers、Leaflet、ArcGIS for JavaScript和Cesium是五種常用的Web GIS地圖框架&#xff0c;它們各有優缺點&#xff0c;適用于不同的場景。還有常見的3d庫和高德地圖、百度地圖。 1. Mapbox 官網Mapbox Gl JS案列&#xff1a;https://docs.mapbox.com/mapbox-gl-…

專項智能練習(加強題型)-DA-02

2. 單選題 近年來&#xff0c;“斜杠青年”成為很多人的時尚追求。它指的是一群不再滿足“專一職業”生活方式&#xff0c;而選擇擁有多重職業和身份的多元生活人群。對此&#xff0c;有人認為&#xff0c;新產業新技術新業態不斷更迭&#xff0c;激烈的競爭促使青年人不斷進行…

使用gitbook 工具編寫接口文檔或博客

步驟一&#xff1a;在項目目錄中初始化一個 GitBook 項目 mkdir mybook && cd mybook git init npm init -y步驟二&#xff1a;添加書籍結構&#xff08;如 book.json, README.md&#xff09; echo "# 我的書" > README.md echo "{}" > bo…

Malformed input or input contains unmappable characters解決

JDK 17 文件上傳編碼異常解決方案技術文檔 1. 問題背景 在 JDK 17 環境下&#xff0c;文件上傳過程中可能拋出 Malformed input or input contains unmappable characters 錯誤。此問題通常由以下原因觸發&#xff1a; 文件路徑/名稱包含非 ASCII 字符&#xff08;如中文、日…

MyBatis 的分頁插件 c

前言 大型項目的數據體量很大&#xff0c;在前端界面展示時為保障展示效果&#xff0c;會要求接口快速返回&#xff0c;這時候后端會選擇分頁獲取數據&#xff0c;只傳遞要查詢的頁碼數據。這就避免了大多問題&#xff0c;達到快速返回的效果。 常用的分頁有2種&#xff1a; …

Linux:理解文件系統

1.理解硬件 1.1磁盤 機械磁盤是計算機中的?個機械設備 磁盤--- 外設 慢 容量?&#xff0c;價格便宜 1.2磁盤物理結構 1.3磁盤的存儲結構 扇區&#xff1a;是磁盤存儲數據的基本單位&#xff0c;512字節&#xff0c;塊設備 如何定位?個扇區呢&#xff1f; 確定磁頭要訪…

用 openssl 測試 tls 連接

以 baidu 為例&#xff0c;命令行為&#xff1a; openssl s_client -tlsextdebug -connect baidu.com:443 得到的輸出為&#xff1a; CONNECTED(00000003) TLS server extension "renegotiation info" (id65281), len1 0000 - 00 …

今日行情明日機會——20250515

上證指數縮量收陰線&#xff0c;個股跌多漲少&#xff0c;上漲波段4月9日以來已有24個交易日&#xff0c;時間周期上處于上漲末端&#xff0c;注意風險。 深證指數縮量收陰線&#xff0c;日線上漲結束的概率在增大&#xff0c;注意風險。 2025年5月15日漲停股主要行業方向分…