色噜噜狠狠成人网_好男人社区神马在线观看www_亚洲国产成人精品女人久久久_日本特黄aaaaaaa大片

千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機(jī)構(gòu)

當(dāng)前位置:首頁(yè)  >  IT問(wèn)答庫(kù)  >  Web基礎(chǔ)知識(shí)

Vue3-巧用指令

發(fā)布:web前端培訓(xùn) 2022-02-09 14:50

推薦答案

  Vue3-巧用指令不知道大家在工作中用上vue3了沒(méi)有,vue3好是好,但是有部分插件并沒(méi)有更新到3.0的,比如我比較喜歡的自定義滾動(dòng)條overlayscrollbarsvue3直接使用overlayscrollbars-vue會(huì)報(bào)錯(cuò)。

  今天我們主要介紹一下如何使用指令來(lái)應(yīng)用這些插件,自定義滾動(dòng)條overlayscrollbars以及拖拽sortablejs

v2-c7f6420386db61816337233c3a8001e5_1440w

  directive

  指令的話(huà)這里就不多說(shuō)了,參考官方文檔(https://v3.cn.vuejs.org/api/options-assets.html),overlayscrollbars以及sortablejs都是提供了js方式調(diào)用的,我們可以在指令里面進(jìn)行插件的初始化。

main.js

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

const app = createApp(App)

directive(app)


directive

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

<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>

我們可以通過(guò)指令來(lái)傳遞初始化參數(shù),也可以獲取插件調(diào)用實(shí)例,比如scrollReady,當(dāng)然如果你指令里面寫(xiě)了默認(rèn)參數(shù),也可以不用參數(shù)的傳遞。

<div

    class="mobiReview"

    v-OverlayScrollbars

  ></div>

sortablejs

這里算是一個(gè)額外補(bǔ)充說(shuō)明,有些同學(xué)在做表格拖拽時(shí)使用了sortablejs

<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: '上海市普陀區(qū)金沙江路 1518 弄'

  }, {

    id: 2,

    date: '2016-05-04',

    name: '王小虎',

    address: '上海市普陀區(qū)金沙江路 1517 弄'

  }, {

    id: 3,

    date: '2016-05-01',

    name: '王小虎',

    address: '上海市普陀區(qū)金沙江路 1519 弄'

  }, {

    id: 4,

    date: '2016-05-03',

    name: '王小虎',

    address: '上海市普陀區(qū)金沙江路 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>

假如不設(shè)置row-key會(huì)出現(xiàn)拖拽數(shù)據(jù)錯(cuò)亂的情況,或者說(shuō)在拖拽一個(gè)列表,而列表的keyindex,也會(huì)出現(xiàn)這個(gè)問(wèn)題。

因?yàn)榇蠖鄶?shù)人喜歡把index作為key的賦值,而我們拖拽時(shí)index會(huì)變動(dòng),移除和添加時(shí)數(shù)組的索引會(huì)變,這會(huì)讓diff出現(xiàn)問(wèn)題,就好比每一個(gè)人都有一個(gè)身份證,把某個(gè)人前面的人移除掉,這個(gè)人不可能就繼承前面那個(gè)人的身份證了,key對(duì)于這條數(shù)據(jù)應(yīng)該是唯一的,不可變的,就像人的身份證一樣,故不要把index作為key來(lái)綁定。

最新問(wèn)答資訊

01 unity用什么編程語(yǔ)言?unity學(xué)習(xí)難度大嗎

學(xué)習(xí) unity 語(yǔ)言
6020 人關(guān)注

02 python容易學(xué)嗎?學(xué)好python有什么好處?

學(xué)習(xí) python 工作 培訓(xùn)
5389 人關(guān)注

03 html是什么語(yǔ)言?html學(xué)習(xí)難嗎?

學(xué)習(xí) html 語(yǔ)言 可以
5062 人關(guān)注

04 c語(yǔ)言難學(xué)嗎?c語(yǔ)言學(xué)好要多久?

語(yǔ)言 技術(shù) 學(xué)習(xí)
4733 人關(guān)注

06 學(xué)好平面設(shè)計(jì)要多久?報(bào)速成班靠譜嗎?

平面 設(shè)計(jì) 學(xué)習(xí) 時(shí)間
4238 人關(guān)注

相關(guān)問(wèn)題

web前端自學(xué)好還是培訓(xùn)好

關(guān)于“web前端自學(xué)好還是培訓(xùn)好”這個(gè)問(wèn)題說(shuō)法眾說(shuō)紛紜,有很多...

選擇Web培訓(xùn)機(jī)構(gòu)的注意事項(xiàng)有哪些

師資力量;老師是不是又豐富的實(shí)戰(zhàn)開(kāi)發(fā)經(jīng)驗(yàn),這點(diǎn)是非常重要的。...

Web前端主要做什么

前端開(kāi)發(fā)是創(chuàng)建Web頁(yè)面或app等前端界面呈現(xiàn)給用戶(hù)的過(guò)程,通過(guò)HT...

web前端培訓(xùn)分享:學(xué)Web前端的好處有哪些

web前端近幾年在IT互聯(lián)網(wǎng)行業(yè)比較火熱,很多人都開(kāi)始參加web前端...

web前端培訓(xùn)分享:Web前端需要學(xué)什么

Web前端需要學(xué)什么?好不好學(xué)?這是很多想要進(jìn)入到web前端行業(yè)的學(xué)...

零基礎(chǔ)參加web前端培訓(xùn)都學(xué)什么

零基礎(chǔ)參加web前端培訓(xùn)都學(xué)什么?基礎(chǔ)階段學(xué)習(xí)HTML常用標(biāo)簽與表單...

測(cè)一測(cè)
你知道多少I(mǎi)T梗

色噜噜狠狠成人网_好男人社区神马在线观看www_亚洲国产成人精品女人久久久_日本特黄aaaaaaa大片

亚洲主播在线播放| 亚洲免费av片| 亚洲精品欧美精品| 亚洲午夜激情在线| 久久久一区二区| 欧美日韩精品在线观看| 国产视频久久| 最新国产拍偷乱拍精品 | 欧美伦理a级免费电影| 国产精品欧美日韩一区| 亚洲第一在线综合网站| 亚洲午夜激情在线| 免费观看30秒视频久久| 国产精品久久| 亚洲第一天堂av| 亚洲男女自偷自拍图片另类| 蜜桃av一区二区三区| 国产精品私拍pans大尺度在线| 在线激情影院一区| 午夜精品影院在线观看| 欧美激情一区二区久久久| 国产人成精品一区二区三| 夜夜爽99久久国产综合精品女不卡| 久久se精品一区二区| 欧美三日本三级少妇三2023| 在线精品视频免费观看| 亚洲综合精品自拍| 欧美精品www在线观看| 国语自产精品视频在线看| 一区二区三区国产在线观看| 久久综合亚洲社区| 国产日本欧美一区二区三区在线| 亚洲精品乱码久久久久久日本蜜臀 | 欧美aⅴ一区二区三区视频| 国产伦精品一区二区三区视频黑人 | 欧美大片18| 国产色综合天天综合网| 中文亚洲免费| 欧美精品福利视频| 亚洲国产精品传媒在线观看| 久久er精品视频| 国产精品自拍一区| 亚洲一区二区在线| 欧美日本三区| 亚洲经典三级| 欧美不卡一区| 亚洲成色www8888| 久久久无码精品亚洲日韩按摩| 国产情人综合久久777777| 亚洲无玛一区| 国产精品对白刺激久久久| 日韩午夜高潮| 欧美精品1区| 日韩亚洲欧美成人| 欧美精品免费在线观看| 亚洲精品网址在线观看| 欧美成人日韩| 最新成人av网站| 免费黄网站欧美| 亚洲国产成人久久综合一区| 可以看av的网站久久看| 在线成人h网| 麻豆精品网站| 91久久夜色精品国产九色| 欧美va天堂| 亚洲精品视频在线看| 欧美日韩1234| 亚洲一区二区久久| 国产精品爽爽ⅴa在线观看| 亚洲一区二区三区乱码aⅴ蜜桃女 亚洲一区二区三区乱码aⅴ | 好吊日精品视频| 久久天天狠狠| 1000部国产精品成人观看| 免费看的黄色欧美网站| 亚洲欧洲免费视频| 欧美精品在线播放| 国产精品99久久久久久久久| 国产精品久久波多野结衣| 午夜一区二区三区在线观看| 国产午夜精品全部视频播放| 久久久福利视频| 亚洲国产精品国自产拍av秋霞| 欧美二区不卡| 亚洲视频电影在线| 国产日韩综合| 免费观看30秒视频久久| 99精品国产在热久久婷婷| 国产精品国产自产拍高清av| 性欧美xxxx视频在线观看| 国外成人免费视频| 欧美激情亚洲精品| 亚洲已满18点击进入久久 | 欧美丰满少妇xxxbbb| 99精品欧美一区二区三区| 国产精品成人va在线观看| 欧美一区二区免费| 亚洲国产婷婷| 国产精品v亚洲精品v日韩精品 | 亚洲风情亚aⅴ在线发布| 欧美日本在线视频| 欧美一区二区三区视频在线| 影音先锋亚洲精品| 欧美另类视频| 欧美一区二区三区在线免费观看| 在线日韩电影| 国产精品va在线播放| 久久国产精品亚洲77777| 日韩视频精品在线观看| 国产精品一级| 欧美大片国产精品| 香蕉精品999视频一区二区| 亚洲国产精品va| 国产精品夜夜夜一区二区三区尤| 麻豆av福利av久久av| 99精品视频免费观看| 国产日韩亚洲| 欧美日韩在线播放| 狂野欧美激情性xxxx欧美| 亚洲素人在线| 亚洲激情中文1区| 国产区精品在线观看| 欧美日韩国内自拍| 久久久噜噜噜久久中文字免 | 国产午夜亚洲精品不卡| 欧美母乳在线| 久久综合狠狠| 欧美亚洲一区二区在线观看| 日韩写真视频在线观看| 一区二区三区在线视频观看| 国产精品久久一卡二卡| 欧美黄色视屏| 久久久久一区| 亚洲尤物在线| 亚洲精品一区二区三区99| 国产婷婷色一区二区三区| 欧美日韩一区二区三区四区五区| 久久亚洲美女| 久久成人免费视频| 亚洲影院在线观看| 日韩视频专区| 亚洲日韩欧美视频| 精品1区2区| 国产性猛交xxxx免费看久久| 国产精品av免费在线观看| 欧美激情综合五月色丁香| 久久久久亚洲综合| 久久国产精品99精品国产| 亚洲免费视频在线观看| 在线视频你懂得一区| 99re6这里只有精品视频在线观看| 原创国产精品91| 韩国v欧美v日本v亚洲v| 国产精品自拍视频| 国产精品久久久久毛片软件| 欧美日韩天天操| 国产精品一区二区三区免费观看| 欧美成人一区二免费视频软件| 久久综合国产精品| 久久在线精品| 久久亚洲不卡| 久久五月天婷婷| 久久精品一区二区| 久久精品视频网| 久久久99久久精品女同性| 欧美在线高清| 先锋亚洲精品| 香港久久久电影| 欧美在线一二三| 欧美自拍偷拍午夜视频| 欧美一区在线视频| 久久国产日韩欧美| 久久久久久久尹人综合网亚洲| 久久高清福利视频| 久久视频一区二区| 免费观看国产成人| 欧美精品一区二区三区在线播放| 欧美激情第三页| 欧美日韩视频免费播放| 欧美网站大全在线观看| 欧美性猛交xxxx乱大交蜜桃 | 久久激情网站| 久久夜精品va视频免费观看| 鲁鲁狠狠狠7777一区二区| 免费一级欧美片在线观看| 欧美极品一区| 欧美午夜在线视频| 国产精品日韩专区| 国模一区二区三区| 亚洲国产成人在线视频| 亚洲人妖在线| 亚洲一二三四区| 久久精品国产免费观看| 米奇777超碰欧美日韩亚洲| 欧美激情区在线播放| 国产精品高清网站| 国产一区二区看久久| 亚洲国产日韩美| 在线视频精品| 欧美在线免费视屏| 欧美va天堂在线|