Vue3知識總結-2

目錄

通過key來管理狀態

事件處理

內聯事件處理器

方法事件處理器

事件傳參

獲取event

傳遞參數

傳參的過程中獲取事件對象

事件修飾符

阻止事件描述符

阻止事件冒泡

數組變化偵測

變更方式

替換一個數組

計算屬性

Class綁定

綁定對象

綁定數組

Style綁定

偵聽器

表單輸入綁定

修飾符


????????

這里是第二次發的關于學習Vue的一些知識點,都是一些比較實用點。

通過key來管理狀態

當使用v-for渲染之后,如果數據項順序改變,Vue不會隨著dom元素順序移動,而是就地更新元素,確保在原本指定的位置上渲染。為了方便跟蹤,所以要為每個元素對應的塊提供一個唯一的key。

?? key通過v-bind綁定屬性,推薦在什么時候都能使用,是一個基礎類型的值。

??因為順序會發生變化,所以不推薦用index,應該使用唯一索引。

 
<template><h3>列表渲染</h3><p v-for="(value, key, index) of user">{{index}}-{{key}}-{{value}}</p><div v-for="item of result" :key="item.id"><p>{{item.title}}</p></div>
</template>
<script>export default {data() {return{user:{name: ["2132",123214],age: 13,},result: [{"id": 1,"title": "133",},{"id":2,"title":"123",}]}}}
</script>

事件處理

使用v-on來監聽事件,事件處理分為

  1. 內聯:事件被觸發的時候執行內聯語句

  2. 方法:一個指向組件上定義的方法的屬性名或是路徑

內聯事件處理器

 
<template><h3>內聯事件處理器</h3><button @click="count++"> Add</button><p>{{count}}</p>
</template><script>export default{data(){return{count: 0}}
}</script><style scoped></style>

方法事件處理器

 
<template><h3>方法事件處理器</h3><button @click="addCount"> Add</button><p>{{count}}</p>
</template><script>export default{data(){return{count: 0}},methods:{addCount(){//在這里進行操作this.count++console.log("點擊了")}}}</script><style scoped></style>

事件傳參

事件參數可以獲取event對象和通過事件傳遞數據

獲取event

 
<template><h3>方法事件處理器</h3><button @click="addCount"> Add</button><p>{{count}}</p>
</template><script>export default{data(){return{count: 0}},methods:{addCount(e){e.target.innerHTML = "aadd" + this.countthis.count++}}}</script><style scoped></style>

傳遞參數

 
<template><h3>事件傳參</h3><p @click= "getNameHandler(item)" v-for="(item, index) of names" :key="index">{{item}}</p>
</template><script>export default {data() {return {names: ["bob", "jack", "marry"]}},methods: {getNameHandler(name){console.log(name)}}}</script><style scoped></style>

傳參的過程中獲取事件對象

 
<template><h3>事件傳參</h3><p @click= "getNameHandler(item, $event)" v-for="(item, index) of names" :key="index">{{item}}</p>
</template><script>export default {data() {return {names: ["bob", "jack", "marry"]}},methods: {getNameHandler(name, e){console.log(name)console.log(e)}}}</script><style scoped></style>

事件修飾符

在處理事件的時候,調用方法很常見,為了能夠更好的去處理事件的邏輯有了事件修飾符很多的可以在官網上查看

阻止事件描述符

 
<template><h3>事件描述符</h3>
<!--  //這里可以之間使用--><a @click.prevent="clickHandle" href="https://www.bilibili.com/video/BV1Rs4y127j8?p=13&spm_id_from=pageDriver&vd_source=2a222b50c15b9af66c7ffac6c7740bde">bilibili</a>
</template><script>
export default {data() {return {}},methods: {clickHandle(e) {// e.preventDefault()這里也就不需要了,阻止了事件的發生console.log("點擊了")}}
}
</script><style scoped></style>

阻止事件冒泡

 
<template><h3>事件描述符</h3><div @click="clickDiv"><p @click.stop="clickP">測試冒泡</p></div>
</template><script>
export default {data() {return {}},methods: {clickDiv(){console.log("div")},clickP(e){//在這里也可以寫,//     e.stopPropagation()console.log("p")}}
}
</script><style scoped></style>

數組變化偵測

變更方式

Vue能夠偵聽響應式數組的變更方法,并在他們被調用時觸發相關的更新

替換一個數組

不會改變原數組,而是創建一個新數組

下面是上面的兩種的代碼展示

 
<template><h3>數組變化偵聽</h3><button @click="addListHandle">添加數據</button><ul><li v-for="(item, index) of names" :key="index">{{ item}}</li></ul><button @click="concatHandler">合并數組</button><h3>數組1</h3><p v-for="(item, index) of arry1" :key="index">{{item}}</p><h3>數組2</h3><p v-for="(item, index) of arry2" :key="index">{{item}}</p>
</template>
<script>export default {data(){return{names: ["arry", "pop", "tom"],arry1: [1,2,3,4,5],arry2: [7,8,9,10,11,12],}},methods:{addListHandle(){//this.names.push("waiai")//ui自動引起更新this.names.concat(["123"])//ui不會變,console.log(this.names.concat(["123"]))// 可以變化為this.names =  this.names.concat(["123"])//體現了不是原數組了},concatHandler(){this.arry1 = this.arry1.concat(this.arry2)}}}</script><style scoped></style>

計算屬性

讓模版中不要寫太多的表達式

計算屬性只運行一次,而返回每次都會運行。

 
<template><h3>西游{{xiyou.tast}}</h3><p>{{xiyouContent}}</p><p>{{xiyouContents()}}</p>/
</template><script>export default{data(){return{xiyou:{tast:"qujing",names:["arru", "123", "321"]}}},//計算屬性computed:{xiyouContent(){return this.xiyou.names.length > 0 ? 'yes':"no"}},//放函數或者方法methods:{xiyouContents(){return this.xiyou.names.length > 0 ? 'yes':"no"}}}
</script><style scoped></style>

Class綁定

操縱元素的CSS class列表,因為class是attribute,那就可以使用v-bind將他們和動態的字符串綁定。在處理比較復雜的是時候,通過拼接生成字符串比較麻煩,因此有了特殊增強功能,除了字符串外,表達式的值可以是對象或者數組。

綁定對象

綁定數組

數組和對象一起使用

提示:數組和對象嵌套過程中,只能是數組嵌套對象。

下面是所有代碼的實現:

 

<template><p :class="{'active':isActive, 'text-danger':hasError}">Class樣式綁定</p><p :class="classObject">Class樣式綁定2</p><p :class="[arrActive, arrHasError]">Class樣式綁定3</p><p :class="[isActive? 'active':'']">Class樣式綁定4</p><p :class="[isActive? 'active':'',{'text-danger':hasError}]">Class樣式綁定5</p>
</template><script>
export default {data(){return {isActive:true,hasError:true,classObject:{"active":true,"text-danger":true,},arrActive:"active",arrHasError:"text-danger",}}
}</script><style scoped>.active{font-size:30px;}.text-danger{color:red;}</style>

Style綁定

這個和class綁定是一樣的

 
<template><p :style="{color:activeColor,fontSize:fontSize +'px'}">Style綁定1</p><p :style="styleObject">Style綁定2</p>
</template><script>
export default {data(){return{activeColor:"green",fontSize:50,styleObject:{color:"red",fontSize:"50px"}}}
}</script><style scoped></style>

偵聽器

偵聽數據的變化,使用watch選項在每次響應式屬性發生變化時觸發一個函數


<template><h3>偵聽器</h3><p>{{message}}</p><button @click="MidMessage">修改數據</button>
</template><script>export default {data(){return{message:"hello",}},methods:{MidMessage(){this.message = "123"}},watch:{//注意這個名字要和偵聽的數據對象是一樣的message(newValue,oldValue){console.log(newValue, oldValue)}}}</script><style scoped></style>

表單輸入綁定

使用v-model指令簡化手動連接值綁定和更改時間監聽器

修飾符

提供了修飾符:.lazy,.number,.trim

<template>
<h3> 表單輸入綁定</h3><form><input type="text" v-model = "message"><input type="text" v-model.lazy="message"><p>{{message}}</p><input type="checkbox" id="checkbox" v-model="checked"/><label for="checkbox">{{ checked}}</label></form>
</template>
<script>export default {data(){return{message:"",checked:false}}}
</script><style scoped></style>

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

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

相關文章

【Python 常用腳本及命令系列 3.3 -- Python 統計程序執行時間】

請閱讀【嵌入式開發學習必備專欄】 文章目錄 Python 統計程序執行時間 Python 統計程序執行時間 在Python中&#xff0c;可以使用time模塊來測量執行一個函數所需的時間。以下是一個基本的例子&#xff0c;展示了如何實現這一功能&#xff1a; import time def your_function…

element-plus 工作經驗總結

Element-plus 文章目錄 Element-plus忠告: 最好鎖定版本, 免得更新更出 BUG 來了el-drawer 設置 modal"false" 后, 遮罩元素仍存在, 點不了空白的地方el-tree 大數據量時接收 check-change 事件報錯導致涉及多個節點的操作沒執行完畢el-table 表頭 show-overflow-too…

前端小程序調用 getLocation 實現地圖位置功能,通過 緯度:latitude 經度: longitude 獲取當前位置

1、首先登錄一下 騰訊的位置服務 有賬號就登錄沒賬號就注冊&#xff0c; 點擊右上角的控制臺點擊左側的應用管理 ---> 我的應用 ---->> 創建應用 1、創建應用 2、列表就會顯示我們剛剛創建好的 key 3、點擊添加 key 4、按照要求填寫信息 我們用的是小程序 所以選擇…

二叉樹介紹

引入 定義 區別 定義不同 形態不同 基本形態

AD域服務器巡檢指南

Active Directory (AD) 域服務器的巡檢對于確保企業網絡的安全性和高效運行至關重要。以下是針對AD域服務器巡檢的關鍵活動和其重要性的優化描述&#xff1a; 保證系統安全&#xff1a; AD域服務器儲存大量敏感數據&#xff0c;包括用戶賬戶信息、策略和訪問權限數據。定期巡檢…

windows和 Linux 下通過 QProcess 打開ssh 和vnc

文章目錄 SSHSSH驗證啟動SSH一、口令登錄二、公鑰登錄通過Qprocess 啟動ssh VNC Viewer簡介通過QProcess啟動vncViewer SSH Secure Shell(SSH) 是由 IETF(The Internet Engineering Task Force) 制定的建立在應用層基礎上的**安全網絡協議**。它是專為遠程登錄會話(**甚至可以…

uniapp下拉選擇組件

uniapp下拉選擇組件 背景實現思路代碼實現配置項使用尾巴 背景 最近遇到一個這樣的需求&#xff0c;在輸入框中輸入關鍵字&#xff0c;通過接口查詢到結果之后&#xff0c;以下拉框列表形式展現供用戶選擇。查詢了下uni-app官網和項目中使用的uv-ui庫&#xff0c;沒找到符合條…

微信小程序中的圖像奧秘:圖片與Base64的華麗變身記

微信小程序中的圖像奧秘&#xff1a;圖片與Base64的華麗變身記 基本概念解析圖片與Base64的關系為何轉換 圖片轉Base64實戰微信小程序使用wx.getImageInfo獲取圖片信息圖片轉換為Base64注意 Base64轉圖片直接在小程序頁面顯示云開發環境轉換注意 遇遇問題排查思路結語引發討論 …

前端開發工程師——ajax

express框架 終端輸入 npm init --yes npm i express 請求報文/響應報文 // 1.引入express const express require(express);// 2.創建應用對象 const app express();// 3.創建路由規則 // request:是對請求報文的封裝 // response&#xff1a;是對響應報文的封裝 app.get(…

【御控物聯】Java JSON結構轉換、JSON協議轉換、JSON屬性互換(15):對象To數組——轉換映射方式

文章目錄 一、JSON結構轉換是什么&#xff1f;二、術語解釋三、案例之《JSON對象 To JSON數組》四、代碼實現五、在線轉換工具六、技術資料 一、JSON結構轉換是什么&#xff1f; JSON結構轉換指的是將一個JSON對象或JSON數組按照一定規則進行重組、篩選、映射或轉換&#xff0…

Vue3自定義封裝音頻播放組件(帶拖拽進度條)

Vue3自定義封裝音頻播放組件&#xff08;帶拖拽進度條&#xff09; 描述 該款自定義組件可作為音頻、視頻播放的進度條&#xff0c;用于控制音頻、視頻的播放進度、暫停開始、拖拽進度條拓展性極高。 實現效果 具體效果可以根據自定義內容進行位置調整 項目需求 有播放暫停…

XSS實戰漏洞挖掘

接下來一年時間將會主要研究滲透測試方向的眾多問題&#xff0c;文章中的內容也會在后面定期更新。本文主要記錄了一些XSS漏洞挖掘中的實用心得和學習筆記。 漏洞描述 漏洞描述&#xff1a;跨站腳本攻擊的英文全稱是Cross Site Script&#xff0c;為了和樣式表區分&#xff0…

python實現pip一鍵切換國內鏡像源腳本分享

本文主要分享一個自己寫的pip一鍵切換國內鏡像源python腳本 import subprocess# pip 國內鏡像源加速 source_urls [{"name": "默認鏡像源", "url": ""},{"name": "清華大學鏡像源(推薦使用)", "url": …

sqlserver數據庫日志文件log.ldf文件占用過大清除的辦法

sqlserver數據庫日志文件log.ldf文件占用過大清除的辦法 技術交流 http://idea.coderyj.com/ 1.清除數據庫日志的方法 --- 查看數據庫日志文件名 USE cs GO SELECT file_id, name,size,* FROM sys.database_files;ps 可以看到其中name字段為數據庫日志名稱"數據庫日志名稱…

【MATLAB源碼-第206期】基于matlab的差分進化算法(DE)機器人柵格路徑規劃,輸出做短路徑圖和適應度曲線。

操作環境&#xff1a; MATLAB 2022a 1、算法描述 差分進化算法&#xff08;Differential Evolution, DE&#xff09;是一種有效的實數編碼的進化算法&#xff0c;主要用于解決實值函數的全局優化問題。本文將詳細介紹差分進化算法的背景、原理、操作步驟、參數選擇以及實際應…

返回分類信息(帶層級)

文章目錄 1.前端展示分類管理信息1.目前項目架構2.啟動前后端項目1.啟動mysql容器2.啟動后端 renren-fast3.啟動前端1.界面2.用戶名密碼都是admin 3.創建分類管理菜單1.菜單管理 -> 新增 -> 新增目錄2.刷新3.能夠新增菜單的原因是前端腳手架與renren-fast后端腳手架通信&…

全面理解BDD(行為驅動開發):轉變思維方式,提升軟件質量

在傳統的軟件開發流程中&#xff0c;開發人員和測試人員的工作通常是相互獨立的。開發人員負責編寫代碼&#xff0c;測試人員負責找出代碼中的問題。然而&#xff0c;這種方法可能導致溝通不足&#xff0c;而且會浪費時間和資源。為了解決這些問題&#xff0c;出現了一種新的開…

Mask2former代碼詳解

1.整體流程 Mask2former流程如圖所示&#xff0c;對于輸入圖片&#xff0c;首先經過Resnet等骨干網絡獲得多層級特征&#xff0c;對于獲得的多層級特征&#xff0c;一個方向經過pixel decoder(基于DetrTransformerEncoderLayer)得到per-pixel embedding,另外一個方向經過transf…

matlab的imclose()詳解

J imclose(I,SE) J imclose(I,nhood) 說明 J imclose(I,SE) 使用結構元素 SE 對灰度或二值圖像 I 執行形態學閉運算。形態學閉運算是先膨脹后腐蝕&#xff0c;這兩種運算使用相同的結構元素。 J imclose(I,nhood) 對圖像 I 執行閉運算&#xff0c;其中 nhood 是由指定結…

mac監聽 linux服務器性能可視化(Grafana+Promethus+Node_exporter)

Grafana和promethus(普羅米修斯)的安裝和使用 監控系統的Prometheus類似于一個注冊中心&#xff0c;我們可以只需要配置一個Prometheus,而在其他服務器&#xff0c;只需要安裝node_exporter,它們的數據流轉就是通過exporter采集數據信息&#xff0c;然后告訴prometheus它的位置…