亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

Vue動態路由緩存不相互影響的解決辦法

2019-11-19 12:06:57
字體:
來源:轉載
供稿:網友

關于react與vue中的key

之前在學習react的時候,常常遇到循環渲染組件時會提示需要在循環組件中加上key屬性,比如有一組列表:

import React, { Component } from 'react';export default calss MainApp extends Component { state = {  student: [  {   name: 'Jenny',   id: 'a001'  },  {   name: 'Jerry',   id: 'a002'  },  ] } render() {  return (   <div>     <ul>     {      this.state.student.map(item => {       // key是必須的屬性,不然瀏覽器會拋出錯誤提示       return (<li key={item.id}>{item.name}</li>)       })     }     </ul>    </div>  ) }}

可能對這個key不是太了解,或者也不許要太深入地去了解它,只知道在循環渲染組件時,隨手加上這個屬性就好。摘自網上的的文章的總結,key的作用為

key的作用主要是為了高效的更新虛擬DOM

雖然不是很懂,但也裝作大切大悟的樣子。key是一個給框架內部用的,我們只管給它加上去就好。

Vue中的key

同樣有一個vue的組件:

<template> <div>  <ul>   <!-- key是必須的屬性,不然瀏覽器會拋出錯誤提示 -->   <li v-for="itme in student" :key={item.id}>{{item.name}}</li>  </ul> </div></template><script>import vue from 'vue';import { Component } from 'vue-property-decorator'@Componentexport default calss MainApp extends vue { student = [  {   name: 'Jenny',   id: 'a001'  },  {   name: 'Jerry',   id: 'a002'  }, ]}</script>

同樣的,回到vue中的key,其實也類似,解釋key的作用,就不得不介紹一下虛擬DOM的diff算法了...算了,我也不是很懂
簡單理解就是react與vue內部判斷組件的一個標識,用于更新或者重用組件的一個重要屬性

更新

key用于更新:是框架內部的算法實現,一兩句話也說不清楚(主要是我也不懂這個算法),簡單理解為當數據更新了,框架內部會判斷更新頁面哪些DOM元素需要更新刪除等操作;

重用

key用于組件重用:其實key不止是在map或者v-for中使用,我們也也可以在其他組件上使用這個屬性(至于哪個組件可以加,小孩子才做選擇,我們的目標是全都加?。?當然加了貌似也沒什么毛病,只是加了顯得有些多余!
在做SPA的時候,我們都會有一個主組件App.vue:

<template> <div id="app">  <div>   <keep-alive>    <router-view />   </keep-alive>  </div> </div></template><script>import Vue from 'vue'import { Component } from 'vue-property-decorator'@Componentexport default class MainApp extends Vue { }</script>

上面代碼會把頁面全部都緩存下來(路由切換回來的時候,頁面表單填寫的內容沒有被清空),這是應為在<router-view />的外面包裹著keep-alive標簽, 頁面數據都保留下來了,避免用戶切換路由,數據丟失的情況,看似很完美!

比如一個產品頁面:

當兩個路由都使用同一個組件如Product.vue這個組件時,來回切換兩個路由,兩個頁面填寫的東西就會共用!切換頁面時,發現頁面自動填寫了上個頁面的東西,這并不是我們想要的!

如果頁面比較少, 比如只有A、B兩個產品,可以每個頁面都定義一個路由地址,并且name屬性不一樣的值:

{ path: '/product', name: 'product', component: Product, children: [  {   path: 'a',   name: 'aProduct',   component: Detail  },  {   path: 'b',   name: 'bProduct',   component: Detail  }, ]}

這時這樣<router-view :key="$route.name"/>就解決上面的問題了

But,頁面較多的時候,定義路由就不能像上面這樣定義了:

{ path: '/product', name: 'product', component: Product, children: [  {   path: 'detail/:id',   name: 'aProduct',   component: Detail  }, ]}

此時路由變成了動態的了,那么,key就不能取name的值了,此時就需要引入一個變量來存儲路由的歷史記錄了,當路由切換時,在歷史記錄中匹配相應的路由,在歷史記錄中保存的一個位置值,取出來賦值個key就可以了

嗯,前面好像廢話有點多,而且貌似有騙標題的嫌疑,其實理解key這個屬性,對于解決頁面緩存,組件重復不相互影響有重要的作用。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲视频一区二区| 亚洲欧美日韩国产精品| 懂色av中文一区二区三区天美| 中文字幕亚洲情99在线| 免费不卡在线观看av| 欧美日韩一区二区免费视频| 国产亚洲美女久久| 久久精品成人动漫| 日韩欧美国产成人| 亚洲性视频网址| 色偷偷偷综合中文字幕;dd| 欧美激情在线有限公司| 亚洲精品国产成人| 亚洲在线视频观看| 成人黄色大片在线免费观看| 2019亚洲男人天堂| 日韩高清av在线| 国产精品日韩在线观看| 国产精品一区电影| 性欧美长视频免费观看不卡| yw.139尤物在线精品视频| 亚洲国产精品小视频| 成人在线中文字幕| 九九热这里只有精品6| 日韩在线视频观看| 欧美日韩免费一区| 一本色道久久88亚洲综合88| 国产精品久久久久久搜索| 亚洲国模精品一区| 精品中文字幕在线| 69**夜色精品国产69乱| 亚洲欧美在线一区二区| 97超视频免费观看| 91丝袜美腿美女视频网站| 亚洲人精选亚洲人成在线| 国产精品久久久久久久久久久久久| 国产成人小视频在线观看| 日本免费久久高清视频| 亚洲国产免费av| 国产精品一久久香蕉国产线看观看| 91精品视频大全| 欧美日韩色婷婷| 欧美成人性色生活仑片| 欧美夫妻性生活视频| 国产欧美日韩中文字幕在线| 欧美极品第一页| 亚洲一区二区三区香蕉| 色先锋资源久久综合5566| 日韩美女写真福利在线观看| 日韩精品视频在线| 2018国产精品视频| 欧美在线一级va免费观看| 国产亚洲精品久久久| 欧美日韩免费网站| 成人羞羞国产免费| 国产aⅴ夜夜欢一区二区三区| 国产精品视频播放| 91精品视频观看| 日韩精品视频在线观看网址| 亚洲国模精品一区| 日韩精品免费看| www国产亚洲精品久久网站| 国产成人精品a视频一区www| 国产色婷婷国产综合在线理论片a| 亚洲精品福利资源站| 成人性生交大片免费看小说| 国产精品视频免费在线观看| 57pao成人永久免费视频| 成人看片人aa| 亚洲天堂av在线播放| 欧美精品videos| 国产成人高清激情视频在线观看| 亚洲欧美国产一本综合首页| 亚洲一区二区三区四区在线播放| 国产一区欧美二区三区| 亚洲人精选亚洲人成在线| 伊人男人综合视频网| 日韩在线观看免费全| 欧美电影免费在线观看| 最近2019年中文视频免费在线观看| 26uuu亚洲国产精品| 久久久在线观看| 欧美性videos高清精品| 欧美一区三区三区高中清蜜桃| 国模视频一区二区三区| 欧美限制级电影在线观看| 亚洲网站在线播放| 日本在线精品视频| 51精品国产黑色丝袜高跟鞋| 国产精品扒开腿做爽爽爽男男| 亚洲bt欧美bt日本bt| 亚洲四色影视在线观看| 亚洲精品一区av在线播放| 91av视频在线免费观看| 欧美激情中文字幕乱码免费| 国产精品久久久久久久久粉嫩av| 亚洲黄色有码视频| 久久精品夜夜夜夜夜久久| 5566日本婷婷色中文字幕97| 日本中文字幕久久看| 亚洲激情在线视频| 亚洲天堂成人在线视频| 亚洲欧美成人在线| 2020国产精品视频| 国产一区二区日韩精品欧美精品| 亚洲欧美在线一区| 亚洲一级片在线看| 国产精品久久久久久av福利| 亚洲免费人成在线视频观看| 国产精品美女视频网站| 色视频www在线播放国产成人| 久久久视频在线| 国产不卡视频在线| 亚洲国产精品成人va在线观看| 色综合久久久888| 91久久综合亚洲鲁鲁五月天| 中文字幕一精品亚洲无线一区| 8x海外华人永久免费日韩内陆视频| 欧美久久精品一级黑人c片| 日韩影视在线观看| 欧美日韩中文字幕在线| 欧美性生交xxxxx久久久| 狠狠综合久久av一区二区小说| 精品久久久久久亚洲精品| 在线视频欧美性高潮| 亚洲免费电影一区| 伊人久久五月天| 欧美在线视频免费播放| 国产视频精品自拍| 成人精品视频99在线观看免费| 日韩欧美一区二区三区| 亚洲精品短视频| 91亚洲精华国产精华| 欧美成在线视频| 国产v综合ⅴ日韩v欧美大片| 久久伊人免费视频| 亚洲第一福利在线观看| 亚洲天堂一区二区三区| 国产精品视频xxx| 亚洲日本aⅴ片在线观看香蕉| 第一福利永久视频精品| 日韩在线免费高清视频| 欧美日韩高清区| 欧美小视频在线| 中文一区二区视频| 国产亚洲精品日韩| 日韩欧美在线视频日韩欧美在线视频| 久久男人资源视频| 自拍偷拍亚洲一区| 亚洲免费av片| 18性欧美xxxⅹ性满足| 亚洲成人中文字幕| 综合136福利视频在线| 精品亚洲永久免费精品| 日韩成人在线电影网| 成人激情视频在线| 国产成人自拍视频在线观看| 国产欧美亚洲精品| 日韩免费观看在线观看| 中文一区二区视频| 国产精品白嫩美女在线观看| 秋霞av国产精品一区| 欧美激情视频在线免费观看 欧美视频免费一| 国产亚洲a∨片在线观看|