最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue+swiper實現左右滑動的測試題功能

 更新時間:2020年10月30日 14:36:26   作者:DDD7  
這篇文章主要介紹了vue+swiper實現左右滑動的測試題功能,本文通過實例代碼給大介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

最近在做一個測試題,前后可以切換題目,點擊按鈕選擇答案,選擇答案的同時改變按鈕的背景色,如下圖所示:

初始代碼

我用了vue和swiper。所有的題目是一個對象數組,通過v-for渲染:

<swiper ref="mySwiper" :options="swiperOptions">
 <swiper-slide v-for="(item, index) in listData" :key="index">
  <div class="question-box">
   <div class="idx">- 第{{ index+1 }}題 -</div>
   <div class="question">{{ item.question }}</div>
  </div>
  <button @click="goNext(index, 'a')" :class="item.answer=='a' ? 'active': ''">是</button>
  <button @click="goNext(index, 'b')" :class="item.answer=='b' ? 'active': ''">否</button>
 </swiper-slide>
</swiper>

一開始我把每道題目的answer存放在對象里面,點擊的按鈕時候切換answer的值,button的動態(tài)class監(jiān)聽到值改變后會引發(fā)背景色的改變。js部分:

goNext(index, answer) {
 this.$set(this.listData[index], 'answer', answer)
 this.swiper.slideNext(100)
},

發(fā)現問題

測試發(fā)現這樣把點擊事件和動態(tài)樣式互相依賴,會造成大概幾百毫秒的延遲才執(zhí)行slideNext(),是可以直觀感受到的延遲。通過調試,發(fā)現造成延遲有兩方面的原因:

  • this.$set 更改數組
  • 執(zhí)行完點擊事件動態(tài)class監(jiān)聽到數據的改變 中間也有延遲。

于是我換了一個思路,不把每個題目的answer放在對像數組里面,而是在data里面定義一個answerMap,這樣解決了問題1。為了解決問題2,我選擇把動態(tài)樣式 :class 去掉,改成用原生js在點擊事件里面直接修改class。這樣兩步下來,確實看不到延遲了。

優(yōu)化后的代碼

html部分

<button @click="goNext($event, index, 'a')">是</button>
<button @click="goNext($event, index, 'b')">否</button>

js部分

goNext(e, index, answer) {
 const element = e.target
 const bro = element.parentNode.children
 for (let i = 0; i < bro.length; i++) {
  if (bro[i] !== element) {
   bro[i].classList.remove("active")
  }
 }
 element.classList.add('active')
 this.answerMap[this.listData[index].question] = answer
 this.swiper.slideNext(100)
},

測試結果:可喜可賀,slideNext()不再有肉眼可見的延遲了。

有的時候為了少寫點代碼,不知不覺犧牲了性能。這次實踐,雖然原生JS使我增加了好幾行代碼,但是帶來的性能提升也是非常明顯的。經過這次優(yōu)化,我覺得如果對Vue源碼理解透徹的人,大概是能馬上知道優(yōu)化點。我雖然看過一遍源碼,但還是理解不夠深入。需要學習的還有很多呀~

到此這篇關于vue+swiper實現左右滑動的測試題功能的文章就介紹到這了,更多相關vue左右滑動內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • vue項目打包優(yōu)化方式(讓打包的js文件變小)

    vue項目打包優(yōu)化方式(讓打包的js文件變小)

    這篇文章主要介紹了vue項目打包優(yōu)化方式(讓打包的js文件變小),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • vue3中通過遍歷傳入組件名稱動態(tài)創(chuàng)建多個component 組件

    vue3中通過遍歷傳入組件名稱動態(tài)創(chuàng)建多個component 組件

    這篇文章主要介紹了vue3中通過遍歷傳入組件名稱動態(tài)創(chuàng)建多個component 組件,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-03-03
  • 詳解el-table表頭文字換行的三種方式

    詳解el-table表頭文字換行的三種方式

    本文主要介紹了el-table表頭文字換行的三種方式,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • vue 權限管理幾種實現方法

    vue 權限管理幾種實現方法

    本文主要介紹了vue 權限管理幾種實現方法,權限需要前后端結合,前端盡可能的去控制,更多的需要后臺判斷,具有一定的參考價值,感興趣的可以了解一下
    2024-02-02
  • vue中get和post請求的區(qū)別點總結

    vue中get和post請求的區(qū)別點總結

    在本篇文章里小編給大家分享的是一篇關于vue中get和post請求的區(qū)別點總結內容,對此有興趣的朋友們可以跟著學習下。
    2021-12-12
  • Vue使用Prism實現頁面代碼高亮展示示例

    Vue使用Prism實現頁面代碼高亮展示示例

    這篇文章主要為大家介紹了Vue使用Prism實現頁面代碼高亮展示示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07
  • 基于vue 實現token驗證的實例代碼

    基于vue 實現token驗證的實例代碼

    這篇文章主要介紹了基于vue 實現token驗證的實例代碼,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-12-12
  • vue3組合式API中setup()概念和reactive()函數的用法

    vue3組合式API中setup()概念和reactive()函數的用法

    這篇文章主要介紹了vue3組合式API中setup()概念和reactive()函數的用法,接下來的事件,我將帶著你從淺到深分析為什么我們需要學習組合式API以及我們的setup()函數作為入口函數的一個基本的使用方式,需要的朋友可以參考下
    2023-03-03
  • 詳解Vue中過度動畫效果應用

    詳解Vue中過度動畫效果應用

    這篇文章主要介紹了詳解Vue中過度動畫效果應用,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • Vue使用wavesurfer.js實現音頻可視化的示例詳解

    Vue使用wavesurfer.js實現音頻可視化的示例詳解

    WaveSurfer.js是一個開源的音頻可視化庫,用于創(chuàng)建交互式、可定制的波形,本文將為大家簡單介紹了Vue如何使用wavesurfer.js實現音頻可視化功能,感興趣的小伙伴可以跟隨小編一起學習一下
    2025-04-04

最新評論

潼关县| 蕲春县| 司法| 宿迁市| 天峻县| 高安市| 施甸县| 韶关市| 祁阳县| 东台市| 逊克县| 广宗县| 化德县| 花莲县| 会理县| 辉县市| 军事| 曲麻莱县| 临武县| 永济市| 德昌县| 肇东市| 镇康县| 绥宁县| 英超| 枣庄市| 阜城县| 张家界市| 永和县| 郑州市| 丹凤县| 文水县| 宁津县| 班玛县| 铁岭县| 江陵县| 江津市| 松阳县| 黔南| 辉南县| 泰安市|