Mantine React Table中Tooltip被列宽遮挡问题求解
解决Mantine React Table中Tooltip被列宽截断的问题
你遇到的问题核心是Tooltip默认在表格单元格的DOM层级内渲染,而表格单元格通常会设置overflow: hidden来控制内容显示,就算加了z-index也突破不了这个限制。直接用下面的方法就能解决:
关键修改:开启Tooltip的Portal渲染
Mantine的Tooltip提供了withinPortal属性,开启后会把Tooltip挂载到document.body下,完全脱离父容器的布局限制,自然就不会被列宽截断了。同时注意z-index要传数字类型,不是字符串。
修改你的操作图标Tooltip代码:
const table = useMantineReactTable({ //...其他配置项 renderRowActions: ({ row }) => ( <> <Tooltip label="Text" position="left" withArrow zIndex={9999} //改成数字类型 withinPortal //添加这个属性,让Tooltip脱离父容器 > <Box style={{ display: 'flex', alignItems: 'center', gap: '0px' }}> <ActionIcon onClick={(event) => handleViewJSON()}> <IconJson /> </ActionIcon> </Box> </Tooltip> </> ), //...其他配置项 });
表头Tooltip的处理
如果是表头的Tooltip,同样给Tooltip加上withinPortal属性就行,示例:
columns={[ { accessorKey: 'yourColumnKey', header: ({ column }) => ( <Tooltip label="表头提示文本" withinPortal> <span>{column.columnDef.header}</span> </Tooltip> ), }, //...其他列配置 ]}
原理很简单:Portal渲染让Tooltip跳出了表格单元格的overflow限制,这时候z-index的层级设置才能正常生效,Tooltip就能完整显示出来了。
内容的提问来源于stack exchange,提问作者Schwarz314
相关产品推荐
相关产品推荐

