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

vue3+ElementPlus封裝函數(shù)式彈窗組件詳解

 更新時(shí)間:2023年08月09日 14:06:02   作者:奔跑的前端猿  
這篇文章主要為大家詳細(xì)介紹了如何利用vue3和ElementPlus封裝函數(shù)式彈窗組件,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下

需求場(chǎng)景:彈窗組件需要支持自定義的插槽內(nèi)容,刪除的彈窗也要使用這個(gè)組件,只是樣式不一樣而已,希望在父組件使用刪除彈窗的時(shí)候直接調(diào)用某個(gè)方法就可以顯示彈窗

組件模擬 cuDialog

假設(shè)我的彈窗組件有以下的props和事件

  • dialogVisible:控制彈窗顯示和隱藏
  • title:彈窗的標(biāo)題
  • showClose:是否刪除彈窗
  • handleClose:彈窗取消的事件
  • handleConfirm:彈窗確定的事件

新建一個(gè)js文件

這里需要使用vue3的createApp,方法實(shí)現(xiàn)函數(shù)式組件調(diào)用

1.導(dǎo)入需要的彈窗組件

import CuDialog from '@/components/CuDialog.vue'

2.創(chuàng)建兩個(gè)全局變量(命名隨意),一個(gè)是存儲(chǔ)createApp創(chuàng)建的組件,一個(gè)是放組件的dom

let app = null; let div = null;

3.定義兩個(gè)方法,一個(gè)是顯示彈窗,一個(gè)是隱藏彈窗

我這里是把兩個(gè)方法放在了一個(gè)對(duì)象里面,方便頁(yè)面的調(diào)用,你們可以根據(jù)自己的喜好自由設(shè)計(jì)

const delMsg = {
  show:function() {},
  hide:function() {}
}

4.開(kāi)始寫(xiě)顯示彈窗的方法

首先需要確認(rèn)show方法要接收的參數(shù),參數(shù)的話就是前面列舉的那些,三個(gè)props和兩個(gè)事件

function show(props) {
  const { title = '溫馨提示', delContent = '確定要?jiǎng)h除所選記錄嗎?', confirm, close } = props;
    // 創(chuàng)建dom并插入到body中
  div = document.createElement('div');
  div.setAttribute('id', 'cu-dialog-id');
  document.body.appendChild(div);
  // 創(chuàng)建組件
  app = createApp(CuDialog, {
    title, // 彈窗的標(biāo)題
    delContent, // 刪除彈窗的內(nèi)容
    dialogVisible: true, // 彈窗顯示或隱藏
    showClose: true, // 是否刪除彈窗
    // 彈窗組件暴露的取消事件handleClose
    onHandleClose: () => {
      close && close();
      console.log('觸發(fā)函數(shù)內(nèi)取消事件');
      app.unmount();
      div.remove();
    },
    // 彈窗組件暴露的取消事件handleConfirm
    onHandleConfirm: () => {
      confirm && confirm();
      console.log('觸發(fā)函數(shù)內(nèi)確認(rèn)事件');
    }
  });
   app.mount(div);
}

5.隱藏彈窗方法

function hide() {
  app.unmount();
  div.remove();
}

6.導(dǎo)出方法

export default delMsg;

使用方法

import delMsg from '@utils/delMessage.js'
delMsg.show({title:'彈窗標(biāo)題',delContent:'彈窗的內(nèi)容',confirm:() =>{
  console.log('確認(rèn)事件觸發(fā)');
  delMsg.hide();
},close:() => {
  console.log('取消事件觸發(fā)')
}})

完整代碼

import CuDialog from '@/components/CuDialog.vue';
let app = null;
let div = null;
const delMsg = {
  /**
   * @param {Object} props
   * @param {String} title 彈窗的標(biāo)題,不傳默認(rèn) ‘溫馨提示'
   * @param {String} delContent 彈窗的內(nèi)容,不傳默認(rèn) ‘確定要?jiǎng)h除所選記錄嗎?'
   * @param {Boolean} autoClose 取消事件是否需要特殊處理,設(shè)置false需要手動(dòng)調(diào)用hide方法,不傳默認(rèn)true
   * @param {Function} confirm 彈窗確認(rèn)事件
   * @param {Function} close 彈窗關(guān)閉事件
   */
  show: function (props) {
    const { title = '溫馨提示', delContent = '確定要?jiǎng)h除所選記錄嗎?', autoClose = true, confirm, close } = props;
    div = document.createElement('div');
    div.setAttribute('id', 'cu-dialog-id');
    document.body.appendChild(div);
    // eslint-disable-next-line vue/one-component-per-file
    app = createApp(CuDialog, {
      title,
      delContent,
      dialogVisible: true,
      showClose: true,
      onHandleClose: () => {
        close && close();
        console.log('觸發(fā)函數(shù)內(nèi)取消事件');
        // 如果需要默認(rèn)關(guān)閉,不做任何邏輯處理請(qǐng)將autoClose設(shè)置為true(默認(rèn)就是true)
        if (autoClose) {
          app.unmount();
          div.remove();
        }
      },
      onHandleConfirm: () => {
        confirm && confirm();
        console.log('觸發(fā)函數(shù)內(nèi)確認(rèn)事件');
      }
    });
    app.mount(div);
  },
  hide: function () {
    app.unmount();
    div.remove();
  }
};
export default delMsg;

到此這篇關(guān)于vue3+ElementPlus封裝函數(shù)式彈窗組件詳解的文章就介紹到這了,更多相關(guān)vue ElementPlus彈窗組件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue?過(guò)濾、模糊查詢及計(jì)算屬性?computed詳解

    vue?過(guò)濾、模糊查詢及計(jì)算屬性?computed詳解

    計(jì)算屬性是vue里面為了簡(jiǎn)化在模板語(yǔ)法中對(duì)響應(yīng)式屬性做計(jì)算而存在的,這篇文章主要介紹了vue?過(guò)濾、模糊查詢(計(jì)算屬性?computed),需要的朋友可以參考下
    2022-11-11
  • vuedraggable拖拽到目標(biāo)區(qū)域?qū)崿F(xiàn)過(guò)程解析

    vuedraggable拖拽到目標(biāo)區(qū)域?qū)崿F(xiàn)過(guò)程解析

    這篇文章主要為大家介紹了vuedraggable拖拽到目標(biāo)區(qū)域?qū)崿F(xiàn)過(guò)程解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • vue中如何刪除字符串中的空格符

    vue中如何刪除字符串中的空格符

    這篇文章主要介紹了vue中如何刪除字符串中的空格符方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • Vue Mint UI mt-swipe的使用方式

    Vue Mint UI mt-swipe的使用方式

    這篇文章主要介紹了Vue Mint UI mt-swipe的使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • 詳解Vue3.0 前的 TypeScript 最佳入門(mén)實(shí)踐

    詳解Vue3.0 前的 TypeScript 最佳入門(mén)實(shí)踐

    這篇文章主要介紹了詳解Vue3.0 前的 TypeScript 最佳入門(mén)實(shí)踐,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • 基于Ant-design-vue的Modal彈窗 封裝 命令式與Hooks用法

    基于Ant-design-vue的Modal彈窗 封裝 命令式與Hooks用法

    這篇文章主要給大家介紹了基于Ant-design-vue的Modal彈窗封裝命令式與Hooks用法,文中有詳細(xì)的代碼示例,具有一定的參考價(jià)值,感興趣的同學(xué)可以借鑒閱讀
    2023-06-06
  • vue-cli中devServer.proxy相關(guān)配置項(xiàng)的使用

    vue-cli中devServer.proxy相關(guān)配置項(xiàng)的使用

    這篇文章主要介紹了vue-cli中devServer.proxy相關(guān)配置項(xiàng)的使用詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • Vue3中Watch、Watcheffect、Computed的使用和區(qū)別解析

    Vue3中Watch、Watcheffect、Computed的使用和區(qū)別解析

    Watch、Watcheffect、Computed各有優(yōu)劣,選擇使用哪種方法取決于應(yīng)用場(chǎng)景和需求,watch?適合副作用操作,watchEffect適合簡(jiǎn)單的自動(dòng)副作用管理,computed?適合聲明式的派生狀態(tài)計(jì)算,本文通過(guò)場(chǎng)景分析Vue3中Watch、Watcheffect、Computed的使用和區(qū)別,感興趣的朋友一起看看吧
    2024-07-07
  • vue 中 element-ui table合并上下兩行相同數(shù)據(jù)單元格

    vue 中 element-ui table合并上下兩行相同數(shù)據(jù)單元格

    這篇文章主要介紹了vue 中 element-ui table合并上下兩行相同數(shù)據(jù)單元格,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-12-12
  • vue定義全局變量和全局方法的方法示例

    vue定義全局變量和全局方法的方法示例

    這篇文章主要介紹了vue定義全局變量和全局方法的方法示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-08-08

最新評(píng)論

崇仁县| 达拉特旗| 土默特右旗| 承德县| 宽甸| 桐乡市| 句容市| 双牌县| 清涧县| 若尔盖县| 边坝县| 金沙县| 新密市| 尤溪县| 绍兴县| 温宿县| 高青县| 沐川县| 肥西县| 成安县| 资溪县| 吴旗县| 枣阳市| 宣武区| 固始县| 祁东县| 射洪县| 镇坪县| 芦溪县| 郓城县| 徐水县| 精河县| 江山市| 中西区| 永州市| 潮州市| 衡水市| 达孜县| 龙陵县| 新余市| 密山市|