做爰高潮a片〈毛片〉,尤物av天堂一区二区在线观看,一本久久A久久精品VR综合,添女人荫蒂全部过程av

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

詳解如何理解vue的key屬性

來源:懂視網 責編:小采 時間:2020-11-27 21:58:54
文檔

詳解如何理解vue的key屬性

詳解如何理解vue的key屬性:如果沒有這個屬性的時候vue應用 in-place patch(就地復用)策略。列表里的順序發生改變的時候比如shuffle(列表打亂)的時候,vue為了提升性能,不會移動dom元素,只是更新相應元素的內容節點。 就地復用的弊端 這個默認的模式是高效的,但是只適用于不依賴
推薦度:
導讀詳解如何理解vue的key屬性:如果沒有這個屬性的時候vue應用 in-place patch(就地復用)策略。列表里的順序發生改變的時候比如shuffle(列表打亂)的時候,vue為了提升性能,不會移動dom元素,只是更新相應元素的內容節點。 就地復用的弊端 這個默認的模式是高效的,但是只適用于不依賴

如果沒有這個屬性的時候vue應用 in-place patch(就地復用)策略。列表里的順序發生改變的時候比如shuffle(列表打亂)的時候,vue為了提升性能,不會移動dom元素,只是更新相應元素的內容節點。

就地復用的弊端

這個默認的模式是高效的,但是只適用于不依賴子組件狀態或臨時 DOM 狀態 (例如:表單輸入值) 的列表渲染輸出。

如上引用自官網,這個模式就是上面的“就地復用”策略。那么是不是依賴子組件狀態的列表渲染采用上面的模式就出問題了呢。如下測試代碼:

 <ul>
 <li v-for="item in items">
 <p>{{ item.title }}</p>
 <p>{{ item.des }}</p>
 <tweet-component></tweet-component>
 </li>
 </ul>
 <script>
 Vue.component("tweet-component", {
 template: `
 <div class="tweet">
 <div class="box">
 {{xixi}}
 </div>
 </div>
 `,
 data() {
 return {
 xixi: Math.random()
 };
 }
 });
 new Vue({
 el: "#app",
 data: {
 items: [
 { title: "nihao1", des: "xiexie1" },
 { title: "nihao2", des: "xiexie2" },
 { title: "nihao3", des: "xiexie3" }
 ]
 },
 methods: {
 shuffle() {
 // lodash的shuffle方法
 this.items = _.shuffle(this.items);
 }
 }
 });
 </script>

操作如下:

 

問題出現了:發生變化時,子組件 沒有更新

ps: 測試臨時 DOM 狀態 (例如:表單輸入值)可以參考這個鏈接 List Rendering and Vue's v-for Directive

key的作用

這個時候引入 key 就可以解決這個問題。 key 的作用是給予一個節點唯一的身份識別,有相同父元素的子元素必須有獨特的 key 。這樣它可以前后對比,算出哪些節點是要重復使用或者調整順序。比如原先的 key 的順序是 i1,i2,i3 ,之后變成了 i2,i1,i3 這個時候只要i3保持不變,把i2 insertBefore 到i1節點前就行了(以上是舉例,vue具體怎么操作的需要去研究源碼)。如果是利用數組的 index 來作為 key 則兩次對比沒有區別,就會出現上面動圖里出現的子組件沒有更新的情況。

可以通過查看下面兩個動圖查看dom節點的變化。第一個gif是沒有使用 key ,第二個是使用了 key 。可以看到我點了按鈕后,第一個只是更新 <p> 標簽的內容節點。第二個是移動了某一項的 <li> 標簽。

ps: 另外可以通過chrome的dom斷點功能查看子元素的插入刪除。

DOM 更改斷點

key的其他用途

key不是只能用在v-for上還可以用在其他元素上。如下代碼

<div v-if="toggle">Hello</div>
<div v-else>Goodbye</div>

切換toggle時,它也是切換div。如果你想用上enter/leave animations時,即節點插入和刪除的時候的動畫時就要打破這個復用,如下:

<transition>
 <div v-if="toggle" key="1">Hello</div>
 <div v-else key="2">Goodbye</div>
</transition>

總結

如果你的列表不發生變化,或者你只是往列表最后一項添加元素則看似不必要增加 key 字段。但是你的項目中有很多列表的時候,你有的需要加 key ,有的不需要加。還不如所有的都加上呢避免別人理解困難(^._.^)ノ。

參考鏈接

https://vuejs.org/v2/guide/list.html#key

vuejs.org/v2/api/#key

https://forum.vuejs.org/t/simple-clarification-of-when-using-key-with-v-for-is-appropriate-and-why/28966/5

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

詳解如何理解vue的key屬性

詳解如何理解vue的key屬性:如果沒有這個屬性的時候vue應用 in-place patch(就地復用)策略。列表里的順序發生改變的時候比如shuffle(列表打亂)的時候,vue為了提升性能,不會移動dom元素,只是更新相應元素的內容節點。 就地復用的弊端 這個默認的模式是高效的,但是只適用于不依賴
推薦度:
標簽: 如何 VUE 理解
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 广河县| 弋阳县| 荆门市| 平乐县| 凤冈县| 沙雅县| 巴彦淖尔市| 靖州| 新和县| 府谷县| 罗城| 加查县| 黑水县| 鹤岗市| 青浦区| 乌拉特前旗| 临沧市| 龙川县| 公安县| 安达市| 阿荣旗| 辛集市| 丹凤县| 武隆县| 井冈山市| 昔阳县| 瓦房店市| 朔州市| 本溪市| 班玛县| 龙山县| 漳平市| 体育| 新丰县| 鄂托克旗| 开阳县| 黄冈市| 凉山| 县级市| 连江县| 大名县|