Реакция ag-grid OnGridReady setRowData имеет значение null - как загрузить данные до вызова OnGridReady? - PullRequest
0 голосов
/ 08 марта 2020

Я использую ловушку useEffect для вызова API данных и AgGrid для заполнения данных. у меня проблема, когда я использую setRowData в первый раз для заполнения AgGrid, orderData имеет значение null. Кажется, что проблема setRowData вызывается до того, как данные заказа выбираются через api и set. (я не хочу использовать опцию тайм-аута, так как в моем случае это неосуществимый вариант)

есть ли способ вызвать onGridReady setRowData после загрузки моей сетки (вызывается post hook). в настоящее время это работает только если я refre sh (у меня есть функция refre sh, которая снова вызывает gridApi.setRowData, и на этот раз это работает)

это мои состояния данных заказа и компонент ag-grid-реагировать * Хук 1005 *

    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 голосов
/ 26 марта 2020

Вы должны вызывать params.api.setRowData(orderData); с эффектом, который сработает, когда ваши orderData готовы, а не когда grid готов:

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

В случае, если вы упомянули, где вы обновляете данные, вероятно, что ваши orderData загрузились в этот момент, и настройка будет работать нормально.

...