欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

組件模擬 cuDialog

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

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

新建一個js文件

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

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

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

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

let app = null; let div = null;

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

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

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

4.開始寫顯示彈窗的方法

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

function show(props) {
  const { title = '溫馨提示', delContent = '確定要刪除所選記錄嗎?', 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) ‘確定要刪除所選記錄嗎?'
   * @param {Boolean} autoClose 取消事件是否需要特殊處理,設(shè)置false需要手動調(diào)用hide方法,不傳默認(rèn)true
   * @param {Function} confirm 彈窗確認(rèn)事件
   * @param {Function} close 彈窗關(guān)閉事件
   */
  show: function (props) {
    const { title = '溫馨提示', delContent = '確定要刪除所選記錄嗎?', 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)閉,不做任何邏輯處理請將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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue腳手架搭建/idea執(zhí)行vue項(xiàng)目全過程

    vue腳手架搭建/idea執(zhí)行vue項(xiàng)目全過程

    新建目錄并運(yùn)行命令提示符,通過npm安裝Vue腳手架并查看版本號,接著,使用vue create命令創(chuàng)建Vue項(xiàng)目,選擇所需配置后完成項(xiàng)目創(chuàng)建,創(chuàng)建成功可見Vue文件夾,使用IDEA打開項(xiàng)目,并啟動項(xiàng)目,根據(jù)需求修改初始化界面
    2024-10-10
  • element-ui select多選綁定回顯值問題

    element-ui select多選綁定回顯值問題

    這篇文章主要介紹了element-ui select多選綁定回顯值問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • Vue.js使用$.ajax和vue-resource實(shí)現(xiàn)OAuth的注冊、登錄、注銷和API調(diào)用

    Vue.js使用$.ajax和vue-resource實(shí)現(xiàn)OAuth的注冊、登錄、注銷和API調(diào)用

    這篇文章主要介紹了 Vue.js使用$.ajax和vue-resource實(shí)現(xiàn)OAuth的注冊、登錄、注銷和API調(diào)用,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • vue監(jiān)聽路由變化的幾種方式小結(jié)

    vue監(jiān)聽路由變化的幾種方式小結(jié)

    這篇文章主要介紹了vue監(jiān)聽路由變化的幾種方式小結(jié),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • 3分鐘迅速學(xué)會Vue中methods方法使用技巧

    3分鐘迅速學(xué)會Vue中methods方法使用技巧

    最近在學(xué)習(xí)Vue,感覺methods還是有必有總結(jié)一下的,下面這篇文章主要給大家介紹了關(guān)于3分鐘迅速學(xué)會Vue中methods方法使用技巧的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-02-02
  • Vue中forEach()的使用方法例子

    Vue中forEach()的使用方法例子

    這篇文章主要給大家介紹了關(guān)于Vue中forEach()使用方法的相關(guān)資料,forEach和map是數(shù)組的兩個方法,作用都是遍歷數(shù)組,在vue項(xiàng)目的處理數(shù)據(jù)中經(jīng)常會用到,需要的朋友可以參考下
    2023-09-09
  • elementUI給el-tabs/el-tab-pane添加圖標(biāo)效果實(shí)例

    elementUI給el-tabs/el-tab-pane添加圖標(biāo)效果實(shí)例

    這篇文章主要給大家介紹了關(guān)于elementUI給el-tabs/el-tab-pane添加圖標(biāo)效果實(shí)例的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用elementUI具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2023-07-07
  • Vue項(xiàng)目中vue.config.js常用配置項(xiàng)詳解

    Vue項(xiàng)目中vue.config.js常用配置項(xiàng)詳解

    在 Vue CLI 創(chuàng)建的項(xiàng)目中,vue.config.js 是核心配置文件,用于定制化構(gòu)建、開發(fā)和部署流程,本文詳細(xì)解析了該文件的常用配置項(xiàng),并結(jié)合代碼示例和表格說明,幫助開發(fā)者高效管理項(xiàng)目配置,提升開發(fā)體驗(yàn),需要的朋友可以參考下
    2025-04-04
  • 對vux點(diǎn)擊事件的優(yōu)化詳解

    對vux點(diǎn)擊事件的優(yōu)化詳解

    今天小編就為大家分享一篇對vux點(diǎn)擊事件的優(yōu)化詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-08-08
  • VSCode中寫Vue沒有代碼提示的解決步驟(附圖文)

    VSCode中寫Vue沒有代碼提示的解決步驟(附圖文)

    這篇文章主要給大家介紹了關(guān)于VSCode中寫Vue沒有代碼提示的解決步驟,代碼提示功能能夠大大的提高開發(fā)效率,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-09-09

最新評論