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

使用next/dynamic导入AgGridReact组件时无法获取ref

解决Next.js动态导入AgGridReact时Ref失效的问题

当你用Next.js的dynamic导入AgGridReact并设置ssr: false时,ref失效的核心原因是:默认情况下,Next.js的dynamic组件不会将ref转发给内部的目标组件,你拿到的ref其实是dynamic包装层的实例,而非真正的AgGridReact实例。

修复步骤

直接修改动态导入的配置,添加forwardRef: true选项即可:

const AgGridReact = dynamic(() => import('ag-grid-react').then((module) => module.AgGridReact), {
  ssr: false,
  forwardRef: true // 关键配置:开启ref转发
});

验证是否生效

你可以在组件中添加useEffect来确认ref是否正确获取到AgGrid实例:

import { useEffect, useRef } from 'react';
import dynamic from 'next/dynamic';

const AgGridReact = dynamic(() => import('ag-grid-react').then((module) => module.AgGridReact), {
  ssr: false,
  forwardRef: true
});

export default function YourGridComponent() {
  const gridRef = useRef(null); 

  useEffect(() => {
    if (gridRef.current) {
      // 这里可以正常调用AgGrid的API,比如获取选中行
      console.log('Grid API:', gridRef.current.api);
    }
  }, []);

  return (
    <AgGridReact
      ref={gridRef}
      rowData={rows}
      columnDefs={columns}
      defaultColDef={defaultColDef}
      animateRows={true}
      pagination={true}
      paginationPageSize={25}
    />
  );
}

修改后,gridRef就能正常指向AgGridReact的实例,和静态导入时的行为一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 10:42:37