【React】漫游式引导

前言

项目中Antd版本较低,升级到有该组件的新版风险过于大,因为考虑到是老项目,不升级为上策(怕出啥幺蛾子),所以抽出为一个内部组件完成需求即可😎~

实践

Tour

const Tour = ({
    visible,
    step,
    gap,
}) => {
    const [posInfo, targetElement] = useTarget(
        step.target,
        open = visible,
        gap
    );
    const content = step.content
    return <>
        {visible && <Mask visible={visible} pos={posInfo} />}
        <Popover content={content} trigger="click" open={visible} arrowPointAtCenter>
            <PortalWrapper visible={visible}>
                {() => visible && <div style={{
                    ...(posInfo || CENTER_PLACEHOLDER),
                    position: 'fixed',
                    pointerEvents: 'none',
                }} key={JSON.stringify(posInfo)} />}
            </PortalWrapper>
        </Popover>
    </>
}

效果

相关推荐
她说她一如既往的爱我3 分钟前
如何写一个uniapp自定义tarbar导航栏?
前端·vue.js·windows·uni-app
大大艺术家10 分钟前
安装vue脚手架出现的一系列问题
前端·javascript·vue.js
UOrb14 分钟前
WebGL - 初相识 - 缓冲区
前端·webgl
远洋录14 分钟前
WebSocket 客户端开发:浏览器实战
前端·人工智能·react
机智的奎哥42 分钟前
微信小程序实现长按录音,点击播放等功能,CSS实现语音录制动画效果
前端·javascript·css·微信·微信小程序·小程序
XDU小迷弟1 小时前
第30天:PHP应用&组件框架&前端模版渲染&三方插件&富文本编辑器&CVE审计
开发语言·前端·网络安全·php
明月看潮生1 小时前
青少年编程与数学 02-006 前端开发框架VUE 09课题、计算属性
前端·javascript·vue.js·青少年编程·编程与数学
布兰妮甜2 小时前
Three.js - 打开Web 3D世界的大门
前端·javascript·3d·动画·three.js
小皮虾2 小时前
几行代码封装,让小程序云函数变为真正云函数,开发体验直接起飞
前端·javascript·微信小程序
Traced back2 小时前
在vue3项目中利用自定义ref实现防抖
前端·javascript·vue.js