Задать вопрос
@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 все время заменяет массив полностью, но как я могу обновлять только новые элементы?
  • Вопрос задан
  • 42 просмотра
Подписаться 1 Средний Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
  • Академия Эдюсон
    Fullstack-разработчик на JavaScript
    11 месяцев
    Далее
  • ProductStar × РБК
    Профессия: Инженер по тестированию
    6 месяцев
    Далее
Пригласить эксперта
Ваш ответ на вопрос

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

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