站長(zhǎng)資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

vue中key的重要作用是什么

vue中key的重要作用是什么

一、使用key管理可復(fù)用的元素

1、相關(guān)示例如下所示:

<!DOCTYPE html> <html>     <head>         <meta charset="utf-8">         <title>v-if-key</title>     </head>     <body>         <div id="app">             <template v-if="Input === 'username'">                 <label>用戶名:</label>                 <input placeholder="請(qǐng)輸入你的用戶名">             </template>             <template v-else>                 <label>郵箱:</label>                 <input placeholder="請(qǐng)輸入你的郵箱">             </template>             <button v-on:click="changeInput">切換</button>         </div>         <script src="../../plugings/vue.js"></script>         <script>             var vm = new Vue({                 el: "#app",                 data: {                     Input: "username",                 },                 methods: {                     changeInput() {                         if(this.Input === 'username') {                             this.Input = 'email';                         } else {                             this.Input = 'username';                         }                     }                 }             })         </script>     </body> </html>

2、當(dāng)輸入用戶名階段,輸入相關(guān)的內(nèi)容后相關(guān)結(jié)果如下所示:

vue中key的重要作用是什么

3、當(dāng)點(diǎn)擊切換按鈕后,其相關(guān)的結(jié)果為:

vue中key的重要作用是什么

4、由以上的結(jié)果可以觀察到其在用戶名中輸入的內(nèi)容,當(dāng)進(jìn)行相關(guān)的切換后在郵箱的相關(guān)輸入框中進(jìn)行了相關(guān)的顯示。

5、出現(xiàn)上述情況的原因:

  • 原理:在Vue中為了盡可能高效地渲染元素,通常會(huì)復(fù)用已有元素,而不是從頭開始進(jìn)行渲染,這樣做可以使Vue渲染效率變得更高。

  • 示例分析:在上述示例中都使用了相同的<input>元素,Vue為了提高渲染效率,復(fù)用了<input>元素,因此在進(jìn)行相關(guān)的切換中input并未被替換掉,僅僅是替換了它的placeholder屬性。

(免費(fèi)學(xué)習(xí)視頻分享:javascript視頻教程)

6、解決方式

為input元素添加具有一個(gè)唯一值的key屬性,來(lái)告訴Vue這兩個(gè)元素是完全獨(dú)立的,不要復(fù)用它們。

修改后其相關(guān)的代碼為:

<!DOCTYPE html> <html>     <head>         <meta charset="utf-8">         <title>v-if-key</title>     </head>     <body>         <div id="app">             <template v-if="Input === 'username'">                 <label>用戶名:</label>                 <input placeholder="請(qǐng)輸入你的用戶名" key="username">             </template>             <template v-else>                 <label>郵箱:</label>                 <input placeholder="請(qǐng)輸入你的郵箱" key="email">             </template>             <button v-on:click="changeInput">切換</button>         </div>         <script src="../../plugings/vue.js"></script>         <script>             var vm = new Vue({                 el: "#app",                 data: {                     Input: "username",                 },                 methods: {                     changeInput() {                         if(this.Input === 'username') {                             this.Input = 'email';                         } else {                             this.Input = 'username';                         }                     }                 }             })         </script>     </body> </html>

關(guān)鍵代碼如下所示:

vue中key的重要作用是什么

二、重用和重新排序現(xiàn)有元素

1、相關(guān)的示例代碼如下所示:

<!DOCTYPE html> <html>     <head>         <meta charset="utf-8">         <title>v-for-key</title>     </head>     <body>         <div id="app">             <p>                 ID:<input type="text" v-model="bookId">                 書名:<input type="text" v-model="bookName">                 <input type="button" @click="add" value="增加">             </p>             <p v-for="item in items">                 <input type="checkbox">                 <span>ID:{{item.id}}, 書名:{{item.name}}</span>             </p>         </div>         <script src="../../plugings/vue.js"></script>         <script>             var vm = new Vue({                 el: "#app",                 data: {                     bookId: '',                     bookName: '',                     items: [                         {id: 1, name: "1"},                         {id: 2, name: "2"}                     ]                 },                 methods: {                     add() {                         this.items.unshift({                             id: this.bookId,                             name: this.bookName                         })                         this.bookId = '';                         this.bookName = '';                     }                 }             })         </script>     </body> </html>

2、相關(guān)的運(yùn)行結(jié)果說(shuō)明

開始時(shí)選中ID為1的序列

vue中key的重要作用是什么

新增書的相關(guān)信息后,所選中的序列變成ID為3的序列

vue中key的重要作用是什么

3、產(chǎn)生如上所示的原因

當(dāng)Vue正在更新使用v-for渲染的元素列表時(shí),它默認(rèn)使用“就地更新”策略。如果數(shù)據(jù)項(xiàng)的順序被改變,Vue將不會(huì)移動(dòng)DOM元素來(lái)匹配數(shù)據(jù)項(xiàng)的順序,而是就地更新每個(gè)元素,并且確保它們?cè)诿總€(gè)索引位置正確渲染。

4、解決辦法

為列表的每一項(xiàng)提供一個(gè)唯一的key屬性。

vue中key的重要作用是什么

最后正確的運(yùn)行結(jié)果如下所示:

vue中key的重要作用是什么

原理:為列表中的每一項(xiàng)提供一個(gè)唯一的key屬性,可以給Vue一個(gè)提示,以便它能跟蹤每個(gè)節(jié)點(diǎn)的身份,從而重用和重新排序現(xiàn)有元素。

注意:key屬性的類型只能是string或者number類型。

贊(0)
分享到: 更多 (0)
網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)
久久国产日韩精华液的功效| 日韩精品中文字幕无码专区| 女人香蕉久久**毛片精品| 老司机午夜精品视频在线观看免费 | 国产成人精品日本亚洲专| 日本精品不卡视频| 国产成人无码精品久久久免费| 日韩在线永久免费播放| 国产精品成人久久久久| 国产精品VIDEOSSEX久久发布| 精品一卡2卡三卡4卡乱码精品视频| 亚洲精品视频观看| 久久精品亚洲精品国产色婷| 久久精品国产成人AV| 秋霞久久国产精品电影院| 四虎国产精品免费永久在线| 九九久久精品国产| 国产精品尹人在线观看| 亚洲AV成人精品日韩一区18p| 亚洲AV日韩AV一区二区三曲| 日韩欧群交P片内射中文| 亚洲av日韩片在线观看| 国产99视频免费精品是看6| 国产成人综合色视频精品| 日本精品视频一区二区三区| 国产精品无码一区二区三区不卡 | 国产亚洲精品AAAA片APP| 亚洲综合精品伊人久久| 国产69精品久久久久APP下载| 久久精品桃花综合| 免费无码精品黄AV电影| 国产精品日韩欧美一区二区三区| 国产精品成人国产乱| 国产精品视频免费一区二区三区| 国产精品亚洲а∨无码播放麻豆 | 999成人精品视频在线| 精品aⅴ一区二区三区| 精品少妇一区二区三区视频| 久久精品国产亚洲| 日韩精品一区二区三区中文| 精品调教CHINESEGAY|