React 简易版 全局message方法

2年前 (2022) 程序员胖胖胖虎阿
236 0 0
import React, { memo } from "react";
import ReactDOM from 'react-dom';


const Message = memo((props) => {
    // console.log('msg:', props)
    return (
        <div className="absolute pt-[50rem] text-white flex justify-center  w-full z-[100]">
            <div className="bg-[#222222] px-5 py-[1.375rem] rounded-lg"> {props.msg || '已提交'}</div>
        </div>
    )
})

let timer = null

const messageTip = {
    show(msg) {
        let el = document.getElementById('#message-wrap');
        // 这一步是必要的的,因为在执行到这里的时候,页面还没有挂载,所以获取不到el节点
        if (!el) {
            el = document.createElement('div')
            el.style.position = 'absolute'
            el.style.top = '0'
            el.style.width = '100%'
            el.id = 'message-wrap'
            document.body.append(el)
            ReactDOM.render(<Message msg={msg} />, el);
        }
        if (el) {
            timer = setTimeout(() => {
                document.body.removeChild(document.getElementById('message-wrap'))
            }, 3000);
        }
        if (!el && timer) {
            clearTimeout(timer)
        }

    },
}

export default messageTip
版权声明:程序员胖胖胖虎阿 发表于 2022年9月2日 上午9:16。
转载请注明:React 简易版 全局message方法 | 胖虎的工具箱-编程导航

相关文章

暂无评论

暂无评论...