如何获取弹框的ref

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

父组件

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能够更新

阅读 2k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题