如何获取弹框的ref

发布于 2022-09-13 00:53:57 字数 1011 浏览 19 评论 0

写了一个简单的弹框组件,在父组件中使用,大致如下

父组件

const parent: React.FC = () => {
    const ref = useRef<HTMLElement>(null);
    const [visible, setVisible] = useState<boolean>(false);

    const handleVisible = () => {
        .....
        setVisible(true);
    };

useEffect(() => {
    document.addEventListener("click", (e) => {
        if (ref.current) {
            setModalVisible(false)
        }
    })
}, [visible]);

return (
    <>
        <MyModal ref={ref} visible={visible} />
    </>
)
}

modal组件

interface MyModalProps {
    ref: any;
}

const MyModal: React.FC<MyModalProps> = (props) => {
    const { ref } = props

    return (
        <>
            <div ref={ref}>
                <div>hhhh</div>
            </div>
        </>
    )
}

我想要在父组件中使用弹框的ref,但是当父组件渲染完成后ref就确定了,当我点击按钮弹出弹框的时候ref并不会更新,因此父组件中获取到的ref为空,请问有没有什么办法能够获取实时的ref呢,也就是当我打开弹框的时候,ref能够更新

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文