Пишу на фреймворке SOLID JS, и у меня есть проблема с виртуальным свитком, при добавление хоть одного нового элемента в массив видимых элементов, ререндерится весь список, как это пофиксить?
//useState
const [scrollTop, setScrollTop] = createSignal<number>(0);
const [viewportPosition, setViewportPosition] = createSignal<number>(0);
const [visibleChildren, setVisibleChildren] = createSignal<any>();
//useEffect
createEffect(() => {
let startNode = Math.floor(scrollTop() / rowHeight) - nodePadding;
startNode = Math.max(0, startNode);
setViewportPosition(startNode);
});
// useMemo
createMemo(() => {
const visibleChildren = new Array(visibleNodeCount)
.fill(null)
.map((_, index) => renderItem(index + viewportPosition()));
setVisibleChildren(visibleChildren);
});
Проблема в то что setVisibleChildren все время заменяет массив полностью, но как я могу обновлять только новые элементы?