【发布时间】:2020-08-11 13:26:03
【问题描述】:
在 React 中构建自定义下拉菜单,但在点击外部时尝试将其关闭时遇到问题。
所以我创建了通用 HOC,所以我也可以将它用于其他场合。
我似乎遇到的问题是我不知道如何将 ref 从 hoc 传递给组件。
我一直在研究 forwardRef 和其他语气的例子,但我想不通。
知道是否可能以及我该怎么做?
import React, { useState, useRef, useEffect } from "react";
export default function withClickOutside(WrappedComponent) {
const Component = (props) => {
const [open, setOpen] = useState(false);
const ref = useRef();
useEffect(() => {
const handleClickOutside = (event) => {
if (!ref?.current?.contains(event.target)) {
setOpen(false);
}
};
document.addEventListener("mousedown", handleClickOutside);
}, [ref]);
return <WrappedComponent {...props} open={open} setOpen={setOpen} ref={ref}/>;
};
return Component;
}
【问题讨论】:
标签: javascript reactjs