Задать вопрос
@SeventimeSsS

Как перестать ререндерить уже отпрессованные элементы?

Пишу на фреймворке 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 все время заменяет массив полностью, но как я могу обновлять только новые элементы?
  • Вопрос задан
  • 41 просмотр
Подписаться 1 Средний Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    JavaScript
    3 месяца
    Далее
  • Яндекс Практикум
    Фронтенд-разработчик расширенный
    13 месяцев
    Далее
  • Академия Eduson
    Fullstack-разработчик на JavaScript
    11 месяцев
    Далее
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы