我正在使用useEffect挂钩调用我的数据api,并使用AgGrid onGridReady填充数据。我遇到的问题是当我第一次使用setRowData填充AgGrid时,orderData为null。问题似乎是在通过api和set提取订单数据之前调用了setRowData。 (我不想使用超时选项,因为在我的情况下这不是可行的选项)
有一种方法可以在加载网格(调用后挂钩)后调用onGridReady setRowData。当前,它仅在刷新后才有效(我有一个刷新函数,可以再次调用gridApi.setRowData,这一次可以正常工作)
这是我的订单数据状态和ag-grid-react组件
const [orderData, setOrderData] = useState([]);
const [gridApi, setGridApi] =useState(null);
const onGridReady = params => {
setGridApi(params.api);
params.api.setRowData(orderData);//this is null which i want not null
params.api.sizeColumnsToFit();
};
挂钩获取数据,retrieveOrderByBondID将设置orderDataState
useEffect(() => {
retrieveOrdersByBondId(props.Id);
}, [props.Id]);
<AgGridReact
enableCellChangeFlash={true}
columnDefs={columns}
onGridReady={onGridReady}
/>
答案 0 :(得分:0)
您应该调用params.api.setRowData(orderData);
,其效果将在 orderData 准备就绪时触发,而不是在 grid 准备就绪时触发:
useEffect(() => { gridApi.setRowData(orderData) } , [orderData]);
在您提到要刷新设置数据的情况下,您的orderData可能已加载到该位置,并且可以正常工作。