You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

单独用Shadcn Table能否固定右侧Actions列?是否需搭配Tanstack Table?

关于Shadcn Table固定右侧Actions列的实现

核心结论

不需要额外安装其他包,而且你其实已经在使用TanStack Table的能力——Shadcn Table本身就是基于TanStack Table封装的,直接用它自带的特性就能实现固定列。

实现步骤

  1. 在列配置中给Actions列添加sticky: "right"属性,这是TanStack Table原生支持的固定列配置
  2. 给该列的单元格设置和表格主体一致的背景色,避免滚动时被其他列的内容穿透覆盖
  3. 确保表格容器开启横向滚动(Shadcn Table默认已配置overflow-x: auto,无需额外修改)

代码示例

// 列定义示例
const columns = [
  // 其他业务列...
  {
    accessorKey: "actions",
    header: "操作",
    cell: ({ row }) => (
      // bg-white 需和你的表格背景色匹配,比如如果表格是灰色背景就用bg-gray-50
      <div className="flex gap-2 bg-white p-2">
        <Button variant="default" size="sm">编辑</Button>
        <Button variant="destructive" size="sm">删除</Button>
      </div>
    ),
    sticky: "right", // 关键配置:固定在右侧
    width: 180, // 可选:固定列宽,防止按钮挤压变形
  },
];

// 渲染表格(和你原本的写法一致)
<Table>
  <TableHeader>
    <TableRow>
      {columns.map((column) => (
        <TableHead key={column.accessorKey}>{column.header}</TableHead>
      ))}
    </TableRow>
  </TableHeader>
  <TableBody>
    {data.map((row) => (
      <TableRow key={row.id}>
        {columns.map((column) => (
          <TableCell key={column.accessorKey}>
            {column.cell({ row })}
          </TableCell>
        ))}
      </TableRow>
    ))}
  </TableBody>
</Table>

注意事项

  • 背景色必须和表格主体一致,否则滚动时会看到其他列的内容透过Actions列显示
  • 如果表格有边框,记得给固定列的左侧加边框,视觉上更连贯

内容的提问来源于stack exchange,提问作者alex1923

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 16:24:56