Я использую RV List для загрузки большого документа с настраиваемым форматированием. Это сработало как шарм, но я столкнулся со следующими двумя проблемами:
В настоящее время я создаю список в cellmeasurer на основе этого для расчета динамической высоты строк (ширина фиксирована). Мне удалось использовать scrollToindex, чтобы найти нужную строку, но некоторые строки довольно большие, и я хочу иметь возможность прокручивать до определенного места в строке. Я понимаю, что для этого мне нужно использовать scrollTop, но я не знаю, как получить верхнюю часть текущей строки + смещение div внутри строки, чтобы она правильно прокручивалась в нужное положение. Я видел ответ на аналогичный вопрос, где был размещен следующий код:
function render ({ scrollToIndex, ...rest }) {
// Convert scrollToIndex to scrollStop
const scrollTop =
**rowOffset** + // Position of row within List
**innerOffset** // Position of inner target within row
Вот мой код:
<AutoSizer>
{({ width, height }) => (
<CellMeasurer
cellRenderer={({index, isScrolling, style, key }) => SectionRenderer(index, key, style)}
columnCount={1}
rowCount={getSectionCount}
width={width}
>
{({ getRowHeight }) => (
<List
height={height}
rowHeight={getRowHeight}
rowCount={getSectionCount}
rowRenderer={({ index, isScrolling, style, key }) => SectionRenderer(index, key, style)}
overscanRowCount={10}
width={width}
scrollToIndex={scrollToSectionIndex}
/>
)}
</CellMeasurer>
)}
</AutoSizer>
Еще одна проблема, с которой я столкнулся, заключается в том, что, хотя я разбил документ на части, каждый из которых заканчивается тегом, чтобы обеспечить плавный поток (без перекрытия) текста, по какой-то причине в тексте есть некоторые точки, где измеритель ячеек игнорирует высота последней строки текста в строках div, вызывающих перекрытие. Мне еще не удалось найти согласованный образец того, где происходит перекрытие в списке. У вас есть какие-нибудь указания, как я могу отладить эту проблему: например. измерить данный раздел изолированно и сравнить его с измерениями, возвращаемыми CellMeasurer?