Ошибка, когда AgGridReact rowData изменяется, когда в столбце есть cellRenderer, который возвращает компонент React - PullRequest
1 голос
/ 08 апреля 2019

С учетом компонента AgGridReact, подобного следующему:

<AgGridReact rowData={myData}>
    <AgGridColumn field="status" cellRenderer={() => <span />} />
</AgGridReact>

Когда я передаю другое значение в myData prop, я получаю следующую ошибку:

ag-Grid: невозможно получить сетку для рисования строк, когда она находится в середине строк рисования.Ваш код, вероятно, вызвал метод API сетки, когда сетка находилась в стадии рендеринга.Чтобы преодолеть это, поместите вызов API в тайм-аут, например, вместо api.refreshView (), вызовите setTimeout (function () {api.refreshView (), 0}).Чтобы увидеть, какая часть вашего кода, вызвавшая обновление, проверила эту трассировку стека.

Проблема не возникает, если cellRenderer заменить на () => 'foo'.

Я не являюсьвызов любых методов сетки API.Из трассировки стека вызывающий вызов API-вызов является внутренним (вызывается из-за изменения rowData).

Пропеллер rowData из хранилища Redux.Это меняется в результате действия, отправленного из саги.Это может иметь или не иметь отношение.

1 Ответ

0 голосов
/ 26 апреля 2019

Использование cellRendererFramework решило проблему.Что-то вроде:

class MyComponent extends React.Component {
    render() { return <span />; }
}
<AgGridColumn field="status" cellRendererFramework={MyComponent} />

Это немного неудобно, но работает.

...