關於Vue.js的v-for,key的順序改變,影響過渡動畫表現

2022-01-08 php中文網課程

關於Vue.js的v-for,key的順序改變,影響過渡動畫表現關於Vue.js的v-for,key的取值,影響過渡動畫表現這個問題是在寫Message組件出現的,先看代碼部分:子組件:

<transition :name="transitionName" @enter="enter" @leave="leave">  . ..</transition><script>  export default {    methods: {      enter(e) {        e.style.height = e.scrollHeight + "px";      },      leave(e) {        e.style.height = 0;      },    },  };</script><style>  transition: all 0.2s ease-in-out;</style>

父組件:

<notice v-for="(item, index) in notices" :key="index">  .</notice>JS:data() {    return {      notices: []    };  },    setTimeout(() => {    let index = 0     this.notices.splice(index, 1);  }, time) 

理論上當某一個子組件被移除時,他會有一個流暢的高度從1到0到過度動畫,但是不然,每次移除時,動畫每次只會應用到最後一個。百思不解,各種js,css實現都不是很理想。依然一卡一卡的。 又去官網把文檔翻了一遍。找出了問題所在。for遍歷的時候,有一個值很重要:key當key取值為Number時,每次數組被改變,dom會重新渲染,所以動畫每次只會影響最後一個。當key取值為String時,每次數組被改變,dom則默認用「就地復用」策略所以把key改為String時,則就是我想要當結果,流暢的依次性的執行了動畫,完美官網的例子https://cn.vuejs.org/v2/guide/list.html#key這裡需要注意的是,key的取值為String/Number,所以測試時key值為了避免不重複,應該取值為隨機的不重複string/number, 不要使用默認的index 。

相關焦點

  • Vue.js深入學習
    vue.jsv-cloak:解決網速慢閃爍問題 ,不會替換掉標籤裡面的內容v-text:會替換掉標籤裡面的內容:原樣輸出v-html:會解析標籤v-bind:綁定屬性的指令,縮寫':200}v-for=" count in 10"in 後面可以放 普通數組,數組對象,對象,數字,如果是數字,count 從1 開始key 屬性只能使用數字和字符串,在使用的時候必須用v-bind屬性綁定的形式指定唯一的字符串或數字類型 :key的值,v-if 每次會重新刪除或創建元素,v-show:設置元素的display
  • 通過示例了解Vue過渡和動畫
    Vue過渡和動畫讓我們網站更具現代感並為網站訪問者提供更好的用戶體驗的好方法。幸運的是,對於開發人員而言,Vue動畫只需幾分鐘即可完成設置。文本主要介紹 Vue <transition>元素,使用該元素創建一些Vue動畫,並了解將其添加到項目中的基本知識。
  • 優美的v-for列表加載動畫:vue動畫鉤子實踐
    原文轉自 優美的v-for列表加載動畫:vue動畫鉤子實踐 https://juejin.im/post/6869195042599206919最近忙完工作,重新擼了一遍vue官方文檔,發現很少被我用到的vue動畫神器,JavaScript鉤子函數
  • CSS3動畫、Vue過渡
    3.Vue中的過渡(動畫)實際上還是運用的 css3 的 transition過渡。雖然我之前vue項目也寫過一些,但是因為項目沒這個需求,所以關於Vue過渡這一塊內容直接跳過了。最近的一個項目,有這個需求,才把vue過渡這塊撿起看。
  • 我發現了 Vue.js 中的性能陷阱
    問題是出在 Vue.js 上嗎?是 Netlify 嗎?還是因為我們的取巧代碼?我必須找出答案。我首先使用 Lighthouse 進行了快速測試。所幸 Firefox 為此提供了一個瀏覽器插件。下面就是我得到的結果。89%的數字挺不錯的。實際上,與許多流行的網站相比,這個表現相當出色。
  • 阿里媽媽又做了新工具,幫你把 Vue2 代碼改成 Vue3 的
    ://v3.cn.vuejs.org/guide/migration/array-refs.html[11]連結: https://v3.cn.vuejs.org/guide/migration/async-components.html[12]連結: https://v3.cn.vuejs.org/guide/migration/attribute-coercion.html
  • Vue 內置組件 transition 以及過渡動畫
    v-enter:定義進入過渡的開始狀態。在元素被插入之前生效,在元素被插入之後的下一幀移除。v-enter-active:定義進入過渡生效時的狀態。在整個進入過渡的階段中應用,在元素被插入之前生效,在過渡/動畫完成之後移除。這個類可以被用來定義進入過渡的過程時間,延遲和曲線函數。v-enter-to:2.1.8 版及以上定義進入過渡的結束狀態。
  • 10個簡單的技巧讓你的 vue.js 代碼更優雅 - 酷扯兒
    返回的對象可以直接用於渲染函數和 計算屬性 內,並且會在發生改變時觸發相應的更新。DOCTYPE html><html lang="en"><body><div id="app"> <child :status="status"></child> </div> <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js
  • Vue的基本使用
    基本使用步驟① 導入 vue.js 的 script 腳本文件② 在頁面中聲明一個將要被 vue 所控制的 DOM 區域當這些 property 的值發生改變時,視圖將會產生「響應」,即匹配更新為新的值。
  • Vue.js系列:生命周期鉤子
    開發人員提供了一個Web開發人員可以在Vue.js應用程式的整個生命周期中使用的各種方法的討論。生命周期鉤子是在Vue對象生命周期的某個階段執行的已定義方法。從初始化開始到它被破壞時,對象都會遵循不同的生命階段。這是一個著名的圖表,表示掛鈎順序。讓我們將代碼添加到鉤子並查看它們如何被解僱的階段。<!
  • Vue標籤
    ({ el:"#app", data:{ "str1":"aa", "str2":"bb", "str3":"cc" } });</script>在vue中,對前端標籤的賦值有三種形式            1.使用差值表達式
  • vue 使用 vue-pdf 實現pdf在線預覽
    這個庫,這當然沒什麼問題,pdf.js的確可以非常完美的實現pdf在線預覽的過程,但是感覺這樣直接進去有點不太優雅,於是找找看看有沒有什麼現成的組件,發現有vue-pdf這個組件,雖然說它沒有原生那樣強大,比如不支持pdf文字複製,列印會亂碼,但是我感覺已經足以滿足我的需求了。
  • 花10分鐘用Vue 實現 1 個數字滾動效果
    動畫.gif2.思考&實現2.1 思考誒,作為十年代碼經驗常年摸魚的我,想起來vue中的transition-group可以實現類似的效果,首先來看看官網的案例[1]效果:="(item , index) in todayAmountComputed" :key="item + index"> {{item}}</p> </transition-group> </div> </div></body><script
  • 尤雨溪公布Vue.js 3.0版本詳細進展變化!
    由於大會內容較多,以下我們就總結報導一些這次的重磅消息,主要是關於即將更新的 Vue 3.0版本的重大變化改進!發展現狀Chrome DevTools 有約 90 萬的周活用戶,React 相比有 160 萬。Evan 推薦用 Chrome DevTools 來預測 Vue 的項目的真實開發者數據。
  • 如何寫一個vue組件專題及常見問題 - CSDN
    父組件將配置項作為一個對象傳入中間組件,在中間組件裡面對默認配置項進行初始化和覆寫,然後再以v-bind={生成好的配置}的方式傳入子組件,在子組件裡面進行驗證。computed 屬性vue 的 computed 屬性默認是只讀的,你可以提供一個 setter。
  • Vue.js 使用 form 表單,按下 Enter 或 Submit 按鈕阻止跳轉頁面/在其他 js 文件調用Vue 擴展方法
    Vue.js 使用 form 表單,按下 Enter 或 Submit 按鈕阻止跳轉頁面添加 .prevent 事件修飾符即可阻止跳轉https://cn.vuejs.org/v2/guide/events.html#事件修飾符使用 form 的好處還有一點就是,在 input 按下回車(Enter)即可提交表單<!
  • 使用 Vue.js 和 Semantic-UI 做一個簡單的願望清單
    二、Vue.js介紹官方文檔傳送門:https://cn.vuejs.org/v2/guide/installation.htmlVue (讀音 /vjuː/,類似於 view) 是一套用於構建用戶界面的漸進式框架。與其它大型框架不同的是,Vue 被設計為可以自底向上逐層應用。
  • Vue中directive自定義指令
    比如v-model、v-on、v-bind、v-if、v-else-if、v-for、v-show、v-slot等。那麼,大家有沒有遇到這些指令不能滿足需求的時候,自己嘗試自定義指令呢?指令是帶有前綴v-以表示它們是vue提供的特殊的屬性。指令的作用,可以理解是寫在DOM元素上的屬性,而這個屬性具有它特定的職責。當表達式的值改變的時候,會產生一定的響應行為,而這些響應行為會作用在綁定的DOM元素上。
  • 史上最全 Vue 前端代碼風格指南
    |- index.js|- plugin.js|- util.js|- date-util.js|- account-model.js|- collapse-transition.js複製代碼上述規則可以快速記憶為「靜態文件下劃線,編譯文件短橫線」。
  • Vue.js最佳靜態站點生成器對比
    因此在本文中,我會向大家介紹用於靜態站點生成的四大 Vue.js 框架,並對它們做詳細對比,幫助找到適合你用例的選項。https://nuxtjs.org/名單上的第一個是 Nuxt.js,這是一個基於 Vue.js 構建的開源高級框架。Nuxt.js 會抽象出客戶端 - 伺服器分發細節,從而簡化 Web 開發工作。