封装一个Notification 通知组件

4 篇文章 0 订阅

1 使用场景

就像下图所示,最近某个项目进入得时候会有一组信息提示,现在我们需要得是有一个可以服用得组件或者公用方法来一次性将需要的信息展示出来,在这里采用了封装element组件Notification (通知)的方式。
element原本样式:
在这里插入图片描述

目前的效果:

在这里插入图片描述

2 组件位置

@FilePath: \newmediacloud\src\plugins\tips.js

3 参数以及回调事件

参数

主要是配置项的参数传递,大部分是直接采用的element Notification自带的参数:

参数名数据类型默认值其他
titleString‘’标题
positionString‘top-right’自定义弹出位置
messString‘信息内容’主体信息内容
buttonNameString‘按钮’按钮展示的名称
showButtonBooleantrue是否展示按钮
durationnumber0显示时间, 毫秒。设为 0 则不会自动关闭
showCloseBooleantrue是否展示关闭按钮

回调方法:

回调方法:
因为我们在这里没有采用父子组件的方式,所以提供一个方法来触发组件的展示。

     notification.showPopUpMessage({
                title: '我的消息提醒',
                mess: '抖音[NAME=大帅哥]已过期,请重新授权!',
                showButton: true,
                buttonName: '立即授权',
                event: (data) => {
                    this.clickBtn(data);
                },
            });

这里如果大家有更好的做法欢迎指点。

这里如果大家有更好的做法欢迎指点。
在这里插入图片描述

4 使用方法

有一点需要注意,因为组件代码里面调用了createElement来创建DOM所以,暂时没有找到如何在公用的js里面替代this.$createElement的方法,所以在项目的main.js里面就把整个实例导出来了。

在这里插入图片描述

目前功能实现的方法:

import {
    Notification,
} from 'element-ui';
import main from '../main';
export const notification = {
    showPopUpMessage(data) {
        const defaultProps = {
            title: '消息提醒',
            position: 'top-right',
            mess: '信息内容', // 主体信息内容
            buttonName: '按钮',
            duration: 0, // 展示时间,参考element组件duration
            showButton: false, // 是否展示按钮
            showClose: true,
            event: (data) => {
            },
        };
        // const dialogArr = [];
        data = Object.assign(defaultProps, data);
        const h = main.$createElement;
        if (data.showButton) {
            Notification({
                title: data.title,
                message: h('p', { class: 'trs-notification-main' }, [
                    h('span', null, data.mess),
                    h('div', { class: 'trs-notification-button-box' }, [
                        h('button', {
                            class: 'trs-notification-button',
                            on: {
                                click: () => {
                                    data.event(data);
                                },
                            },
                            attrs: {
                                name: data.name,
                                age: data.age,
                            },
                        }, data.buttonName),
                    ]),

                ]),
                position: data.position,
                duration: data.duration, // 显示时间, 毫秒。设为 0 则不会自动关闭
            });
        } else {
            Notification({
                title: data.title,
                message: h('p', { class: 'trs-notification-main' }, [
                    h('span', null, data.mess),
                ]),
                position: data.position,
                duration: data.duration, // 显示时间, 毫秒。设为 0 则不会自动关闭
            });
        }
    },
};

调用方法:

<script>
import { notification } from '@/plugins/tips.js';
      clickBtn(data) {
            console.log(data);
        },
       open() {
            notification.showPopUpMessage({
                title: '我的消息提醒',
                mess: '抖音[NAME=大帅哥]已过期,请重新授权!',
                showButton: true,
                buttonName: '立即授权',
                event: (data) => {
                    this.clickBtn(data);
                },
            });
            this.$nextTick(() => {
                notification.showPopUpMessage({
                    title: '我的消息提醒',
                    mess: '不展示操作按钮',
                    buttonName: '立即授权',
                });
            });
        },
</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值