React ag-grid OnGridReady setRowData为空-如何在调用OnGridReady之前加载数据?

时间:2020-03-08 17:23:43

标签: reactjs react-hooks ag-grid ag-grid-react

我正在使用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}
            />

1 个答案:

答案 0 :(得分:0)

您应该调用params.api.setRowData(orderData);,其效果将在 orderData 准备就绪时触发,而不是在 grid 准备就绪时触发:

useEffect(() => { gridApi.setRowData(orderData) } , [orderData]);

在您提到要刷新设置数据的情况下,您的orderData可能已加载到该位置,并且可以正常工作。