黄视频网站在线免费观看-黄视频网站在线看-黄视频网站在线观看-黄视频网站免费看-黄视频网站免费观看-黄视频网站免费

千鋒教育-做有情懷、有良心、有品質的職業教育機構

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術干貨  > vue3-巧用指令

vue3-巧用指令

來源:千鋒教育
發布人:wjy
時間: 2022-06-01 17:34:00 1654076040

不知道大家在工作中用上vue3了沒有,vue3好是好,但是有部分插件并沒有更新到3.0的,比如我比較喜歡的自定義滾動條overlayscrollbars,vue3直接使用overlayscrollbars-vue會報錯。

今天我們主要介紹一下如何使用指令來應用這些插件,自定義滾動條overlayscrollbars以及拖拽sortablejs。

vue3-巧用指令

**directive**

指令的話這里就不多說了,參考官方文檔([https://v3.cn.vuejs.org/api/options-assets.html#directives](https://link.zhihu.com/?target=https%3A//v3.cn.vuejs.org/api/options-assets.html%23directives)),overlayscrollbars以及sortablejs都是提供了js方式調用的,我們可以在指令里面進行插件的初始化。

**main.js:**

```js
import { createApp } from 'vue'
import directive from './directive'

const app = createApp(App)

directive(app)
```

**directive:**

```js
import { Sortable } from 'sortablejs'
import 'overlayscrollbars/css/OverlayScrollbars.css'
import OverlayScrollbars from 'overlayscrollbars'

export default function(app) {
  app.directive('focus', {
    mounted(el) {
      el.focus()
    }
  })
  app.directive('sortable', {
    mounted(el, binding) {
      const config = binding.value
      new Sortable(el, config || {})
    }
  })
  app.directive('OverlayScrollbars', {
    mounted(el, binding) {
      const config = binding.value
      const instance = OverlayScrollbars(el, config || {
        scrollbars: { autoHide: 'move' }
      })
      if (config && config.scrollReady) {
        config.scrollReady(instance)
      }
    }
  })
}
```

**vue:**

```js
<template>
  <ul v-sortable="sortableOptions" class="listBox">
    <li class="li" v-for="item in list" :key="item">{{ item }}</li>
  </ul>
  <div
    class="mobiReview"
    v-OverlayScrollbars="{ ...scrollOptions, scrollReady }"
  ></div>
</template>

<script setup>
import { reactive, toRefs } from 'vue'

const state = reactive({
  list: [1, 2, 3, 4, 5],
  scroll: {
    instance: null
  },
  scrollOptions: {
    className: 'os-theme-thin-dark',
    scrollbars: { autoHide: 'move' }
  }
})

function scrollReady(instance) {
  state.scroll.instance = instance
}

const sortableOptions = {
  animation: 150,
  sort: true,
  draggable: '.li',
  onUpdate: (event) => {
    event.stopPropagation()
    state.list.splice(event.newDraggableIndex, 0, state.list.splice(event.oldDraggableIndex, 1)[0])
  }
}

const { list } = toRefs(state)
</script>

<style lang="less" scoped>
.listBox {
  display: flex;
  list-style: none;
  > li {
    width: 100px;
    height: 100px;
    margin: 10px;
    background-color: red;
    display: flex;
    justify-content: center;
    align-items: center;
    cursor: move;
  }
}
.mobiReview {
  height: 500px;
  width: 300px;
  .box {
    height: 1000px;
  }
}
</style>
```

我們可以通過指令來傳遞初始化參數,也可以獲取插件調用實例,比如scrollReady,當然如果你指令里面寫了默認參數,也可以不用參數的傳遞。

```js
<div
    class="mobiReview"
    v-OverlayScrollbars
  ></div>
```

**sortablejs**

這里算是一個額外補充說明,有些同學在做表格拖拽時使用了sortablejs:

```js
<template>
  <el-table :data="tableData" style="width: 100%" row-key="id">
    <el-table-column type="index" width="50"></el-table-column>
    <el-table-column prop="date" label="日期" width="180"></el-table-column>
    <el-table-column prop="name" label="姓名" width="180"></el-table-column>
    <el-table-column prop="address" label="地址"></el-table-column>
  </el-table>
</template>

<script setup>
import { reactive, toRefs, onMounted } from 'vue'
import { Sortable } from 'sortablejs'

const state = reactive({
  tableData: [{
    id: 1,
    date: '2016-05-02',
    name: '王小虎',
    address: '上海市普陀區金沙江路 1518 弄'
  }, {
    id: 2,
    date: '2016-05-04',
    name: '王小虎',
    address: '上海市普陀區金沙江路 1517 弄'
  }, {
    id: 3,
    date: '2016-05-01',
    name: '王小虎',
    address: '上海市普陀區金沙江路 1519 弄'
  }, {
    id: 4,
    date: '2016-05-03',
    name: '王小虎',
    address: '上海市普陀區金沙江路 1516 弄'
  }]
})

onMounted(() => {
  const tbody = document.querySelector('.el-table__body-wrapper tbody')
  Sortable.create(tbody, {
    onUpdate: (event) => {
      event.stopPropagation()
      state.tableData.splice(event.newDraggableIndex, 0, state.tableData.splice(event.oldDraggableIndex, 1)[0])
    }
  })
})

const { tableData } = toRefs(state)
</script>
```

假如不設置row-key會出現拖拽數據錯亂的情況,或者說在拖拽一個列表,而列表的key為index,也會出現這個問題。

因為大多數人喜歡把index作為key的賦值,而我們拖拽時index會變動,移除和添加時數組的索引會變,這會讓diff出現問題,就好比每一個人都有一個身份證,把某個人前面的人移除掉,這個人不可能就繼承前面那個人的身份證了,key對于這條數據應該是唯一的,不可變的,就像人的身份證一樣,故不要把index作為key來綁定。

**-** **End** **-**

更多關于“html5培訓”的問題,歡迎咨詢千鋒教育在線名師。千鋒已有十余年的培訓經驗,課程大綱更科學更專業,有針對零基礎的就業班,有針對想提升技術的提升班,高品質課程助理你實現夢想。

tags:
聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
10年以上業內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT
日韩中文字幕在线播放| 国产91素人搭讪系列天堂| 日韩中文字幕一区二区不卡| 精品视频在线观看免费| a级精品九九九大片免费看| 久久成人亚洲| 精品国产一区二区三区久| 精品久久久久久中文字幕2017| 国产欧美精品| 国产伦精品一区二区三区无广告| 日韩女人做爰大片| 国产91素人搭讪系列天堂| 青青久热| 精品国产一区二区三区免费| 日韩字幕在线| 精品国产一区二区三区久久久蜜臀 | 成人在激情在线视频| 亚欧成人毛片一区二区三区四区| 成人影视在线播放| 你懂的在线观看视频| 91麻豆精品国产自产在线| 久久国产一久久高清| 欧美激情伊人| 中文字幕一区二区三区精彩视频| 在线观看成人网| 亚洲 欧美 成人日韩| 日韩在线观看视频黄| 韩国毛片免费| 日韩免费在线| 精品在线视频播放| 一级毛片视频播放| 天天色成人网| 国产美女在线观看| 黄色短视屏| 一本伊大人香蕉高清在线观看| 欧美激情伊人| 黄视频网站免费看| 精品视频在线观看一区二区| 一级毛片视频免费| 香蕉视频亚洲一级| 午夜在线影院| 欧美激情一区二区三区视频 | 国产91精品一区| 亚飞与亚基在线观看| 欧美a级成人淫片免费看| 99色吧| 国产激情视频在线观看| 国产麻豆精品高清在线播放| 91麻豆精品国产自产在线| 精品视频在线观看视频免费视频| 国产网站免费在线观看| 久久精品欧美一区二区| 亚洲天堂在线播放| 国产一区二区精品久久| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 91麻豆国产福利精品| 国产韩国精品一区二区三区| 二级片在线观看| 韩国三级视频在线观看| 91麻豆国产| 台湾美女古装一级毛片| 国产亚洲精品成人a在线| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 国产麻豆精品| 欧美一级视频免费| 人人干人人插| 精品国产一级毛片| 四虎久久精品国产| 精品国产一区二区三区精东影业| 欧美激情影院| 国产不卡在线播放| 91麻豆tv| 99久久精品国产麻豆| 午夜久久网| 天天色色网| 欧美18性精品| 一a一级片| 日韩专区第一页| 91麻豆精品国产自产在线观看一区 | 国产一区二区精品久久91| 91麻豆精品国产自产在线 | 国产一区二区高清视频| 天天色成人网| 国产极品精频在线观看| 成人高清视频在线观看| 欧美激情一区二区三区中文字幕| 999精品在线| 久久成人亚洲| 国产极品白嫩美女在线观看看| 亚洲天堂免费| 欧美激情一区二区三区视频| 日韩男人天堂| 日韩男人天堂| 久草免费资源| 亚洲女初尝黑人巨高清在线观看| 国产一区二区精品久久91| 天天做人人爱夜夜爽2020毛片| 天天做日日干| 国产91精品系列在线观看| 国产成人精品综合在线| 国产亚洲精品aaa大片| 韩国三级香港三级日本三级la| 四虎影视库国产精品一区| 成人在免费观看视频国产| 青青久热| 99久久精品国产国产毛片 | 毛片的网站| 精品久久久久久综合网| 天天做日日干| 国产亚洲精品aaa大片| 一本伊大人香蕉高清在线观看| 亚久久伊人精品青青草原2020| 可以免费看毛片的网站| 欧美激情一区二区三区视频| 日韩在线观看免费| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 成人免费网站久久久| 国产一区二区精品久久| 欧美另类videosbestsex视频| 色综合久久天天综合观看| 99色视频在线观看| 欧美a级片视频| 国产不卡高清在线观看视频| 国产精品自拍一区| 人人干人人草| 日韩综合| 成人影院久久久久久影院| 免费国产在线观看不卡| 国产国产人免费视频成69堂| 国产视频一区二区在线播放| 国产网站麻豆精品视频| 九九国产| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 日本免费区| 午夜欧美成人久久久久久| 欧美激情影院| 午夜欧美成人香蕉剧场| 99色精品| 久久国产精品自线拍免费| 九九干| 成人免费观看男女羞羞视频| 国产91精品一区| 可以免费看毛片的网站| 国产综合91天堂亚洲国产| 日韩在线观看免费完整版视频| 午夜激情视频在线播放| 国产成人精品综合在线| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 青青久久精品国产免费看| 国产成人精品综合在线| 国产视频久久久久| 精品视频在线看| 超级乱淫黄漫画免费| 精品毛片视频| 精品视频一区二区三区免费| 久久精品店| 国产国语在线播放视频| 国产视频一区二区在线观看| 色综合久久久久综合体桃花网| 精品国产一区二区三区免费| 国产91视频网| 亚洲不卡一区二区三区在线| 毛片的网站| 韩国三级香港三级日本三级la| 国产国语在线播放视频| 欧美激情中文字幕一区二区| 美女免费精品高清毛片在线视| 欧美a级片视频| 亚洲 国产精品 日韩| 免费一级片网站| 九九久久99| 999精品在线| 国产极品精频在线观看| 成人高清视频在线观看| 午夜在线亚洲男人午在线| 国产91精品一区| 成人影院久久久久久影院| 免费国产在线观看| 韩国毛片免费大片| 日本免费区| 国产91素人搭讪系列天堂| 日本乱中文字幕系列| 日韩av成人| 久久99爰这里有精品国产| 国产不卡在线播放| 青草国产在线观看| 日本在线www| 久久99青青久久99久久| 国产91精品一区| 美女免费毛片| 国产一区免费在线观看| 日韩一级黄色大片| 精品国产一区二区三区久久久狼 | 久久福利影视| 色综合久久久久综合体桃花网| 成人a级高清视频在线观看| 久久久久久久免费视频| 亚洲女初尝黑人巨高清在线观看| 色综合久久久久综合体桃花网| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 |