import { View } from "@tarojs/components"; import style from "./index.module.scss" import classnames from "classnames"; import { memo, ReactNode, useEffect, useMemo, useRef } from "react"; import CloseBtnIcon from "@/components/closeBtn" export interface Params { title?: string, //标题 show?: false|true, //显示显示弹窗 showTitle?: false|true, //是否显示标题 onClose?:() => void, //关闭事件 children?: ReactNode, //插槽内容 // IconButton?: ReactNode, // showIconButton?: false|true, //是否显示关闭按钮 position?: 'bottom'|'top'|'right', //弹出位置 animationEnd?: () => void //弹出动画结束 } export default memo(( { title = '标题', show = false, showTitle = true, onClose, showIconButton = false, children, position = 'bottom', animationEnd }:Params) => { const animationTime = useRef(null) useEffect(() => { if(show) { animationTime.current = setTimeout(() => { animationEnd?.() }, 260) } else { clearTimeout(animationTime.current) } }, [show]) useEffect(() => { return () => { clearTimeout(animationTime.current) } }, []) return ( <> onClose?.()} > e.stopPropagation()} > {showTitle&&{title}} {showIconButton&& onClose?.()}/> } {show&&children} ) })