
从“react”导入 React, { useState, useRef, useEffect };
从“react-dom”导入ReactDOM;
const PortalWrapper = React.forwardRef(({ 孩子 }, ref) => {
const [openDropdownMenu, setOpenDropdownMenu] = useState(false);
const [位置,setPosition] = useState({
左:0,
顶部:0,
宽度:“100%”,
});
const dropdownRef = useRef(null);
const handleDropdDownClick = () => {
setOpenDropdownMenu(!openDropdownMenu);
if (ref && ref && ref.current 中的“当前”) {
const { 顶部、左侧、高度 } = ref.current.getBoundingClientRect();
设置位置({
顶部:顶部+高度,
左边,
宽度:`${ref.current.clientWidth}px`,
});
}
};
使用效果(()=> {
if (openDropdownMenu && dropdownRef.current) {
dropdownRef.current.style.top = `${position.top}px`;
dropdownRef.current.style.left = `${position.left}px`;
dropdownRef.current.style.display = "无";
}
}, [打开下拉菜单,位置]);
返回 (
<div ref={ref} className="w-full" onClick={handleDropdDownClick}>
{孩子(位置)}
{打开下拉菜单&&
ReactDOM.createPortal(
<div ref={dropdownRef} style={{ 位置:“绝对” }}>
{孩子(位置)}
</div>,
文档正文
)}
</div>
);
});
导出默认的PortalWrapper;
<PortalWrapper ref={dropdownRef}>
{()=>
(itIsOwner(用户?.agent_role) ||
用户?.platform_owner) && (
<选择
样式={自定义样式}
onChange={(selectedOption) =>
处理操作更改(
选定的选项,
联系方式,
指数
)
}
选项={agentData?.map((选项)=>({
值:选项,
标签:`${option.first_name}`,
}))}
占位符=“埃丝特·霍华德”
类名={clsx(
“dropdown_list !w-40 光标指针 userFilter mt-[0.4375rem]”
)}
classNamePrefix =“dropdown_list-联系人”
菜单位置=“固定”
菜单放置=“自动”
menuShouldScrollIntoView={false}
menuPortalTarget={document.body}
/>
)
}
</门户包装>
以上就是在门户中打开下拉列表,以便在反应中使用表的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号