import { View } from '@tarojs/components' import style from './index.module.scss' import classnames from 'classnames' import { memo, ReactNode, useEffect, useMemo, useRef, useState } 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, //弹出动画结束 isFixed?: boolean //二次弹窗触发 } export default memo( ({ title = '标题', show = false, showTitle = true, isFixed = false, 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) } }, []) const [ShowContext, setShowContext] = useState(false) return ( <> onClose?.()}> e.stopPropagation()}> {showTitle && {title}} {showIconButton && ( onClose?.()} /> )} {children} ) }, )