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

如何向AdminJS.bundle()传自定义Props及实现过滤数据Excel下载

方案二:直接复用AdminJS已获取的过滤后数据

该思路完全可行,能避免重复查询数据库,实现方式如下:

  1. 获取AdminJS已加载的数据
    在list动作的after钩子中,originalResponse.records包含当前页的过滤后数据,可存入状态仓库:
actions: {
  list: {
    after: (originalResponse) => {
      const store = useStore();
      store.setState({ filteredRecords: originalResponse.records });
      return originalResponse;
    }
  },
  Download: {
    actionType: "resource",
    icon: "Download",
    component: Adminjs.bundle("../../Components/Download.jsx")
  }
}
  1. 传递数据到组件并导出Excel
    在Download.jsx中读取仓库数据,用xlsx库直接在客户端生成Excel:
import { useStore } from 'adminjs';
import * as XLSX from 'xlsx'; // 需要先安装xlsx依赖

const Download = () => {
  const { filteredRecords } = useStore().getState();

  const handleDownload = () => {
    // 将数据转换为Excel工作表
    const worksheet = XLSX.utils.json_to_sheet(filteredRecords);
    const workbook = XLSX.utils.book_new();
    XLSX.utils.book_append_sheet(workbook, worksheet, "用户数据");
    // 导出文件
    XLSX.writeFile(workbook, "users.xlsx");
  };

  return <button onClick={handleDownload}>下载当前页数据</button>;
};

export default Download;

注意:此方式仅能导出当前页数据,若需导出所有过滤后的数据,仍需通过过滤参数调用API获取全量数据。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 16:45:24