Предположим, что наш контейнерный компонент принимает информацию фильтра / сортировки / подкачки в строке запроса. Эта информация извлекается из URL в componentWillMount
и устанавливается в состояние контейнера. Это состояние (скажем, просто page
) затем передается нашему экземпляру таблицы реакции как page
prop. Мы подключаем onFetchData
как onFetchData={state => fetchData(state)}
. В нашей функции fetchData
мы извлекаем переданные в таблицу реакции значения page
и pageSize
и срезаем наши данные, а затем устанавливаем их в наше состояние. Затем функция рендеринга запускается снова, извлекает наши значения состояния и устанавливает их на подпорках таблицы.
Звучит разумно, однако, похоже, что этот цикл render> onFetchData происходит без конца, пока браузер не сгенерирует ошибку «Максимальная глубина обновления превышена».
Мы должны иметь возможность установить начальную страницу при первой загрузке нашего компонента, но таблица реагирования выглядит не так.
Обновление
Это оказалось ошибкой в таблице реакций, для которой я послал PR:
Ошибка: https://github.com/react-tools/react-table/issues/1230
PR: https://github.com/react-tools/react-table/pull/1231
Репро: https://codesandbox.io/s/50knlro2xn