Большие компоненты в виде разделов в VirtualizedList / etc?

Если я хочу отобразить кучу разнородных данных в виртуализированном списке, кажется, что по умолчанию это делается так, чтобы родительский компонент собирал все данные, чтобы он мог создавать разделы для предоставления компоненту списка.

Есть ли способ избежать этого, чтобы родительский компонент делал это? Я хотел бы отделить родительский компонент от части сбора данных, чтобы все, что ему нужно было сделать, это объявить, что у него есть такие-то компоненты, и тогда эти компоненты будут нести ответственность за сбор данных.

Это было бы чрезвычайно просто, если бы это был ScrollView:

<ScrollView>
    <SectionA>
    <SectionB>
    <SectionC>
</ScrollView>

Однако, чтобы использовать прирост производительности VirtualizedList, если каждый раздел большой, мне нужно будет передать отдельные данные каждого раздела в VirtualizedList. Я не знаю, как это сделать и возможно ли это.

Умерло ли Create-React-App?
Умерло ли Create-React-App?
В этом документальном фильме React.dev мы исследуем, мертв ли Create React App (CRA) и какое будущее ждет этот популярный фреймворк React.
Освоение React Native: Пошаговое руководство для начинающих
Освоение React Native: Пошаговое руководство для начинающих
React Native - это популярный фреймворк с открытым исходным кодом, используемый для разработки мобильных приложений. Он был разработан компанией...
В чем разница между react native и react ?
В чем разница между react native и react ?
React и React Native - два популярных фреймворка для создания пользовательских интерфейсов, но они предназначены для разных платформ. React - это...
От React к React Native: Руководство для начинающих по разработке мобильных приложений с использованием React
От React к React Native: Руководство для начинающих по разработке мобильных приложений с использованием React
Если вы уже умеете работать с React, создание мобильных приложений для iOS и Android - это новое приключение, в котором вы сможете применить свои...
Хуки React: что это такое и как их использовать
Хуки React: что это такое и как их использовать
Хуки React - это мощная функция библиотеки React, которая позволяет разработчикам использовать состояние и другие возможности React без написания...
1
0
167
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Не уверен, является ли это идиоматическим или грубым антипаттерном React, но я решил, что каждый раздел должен быть реализован как полностью безголовый Component.

export type SectionDataComponentProps = {
  onDataChanged?: () => void, // call this whenever the data updates.
}

export class SectionDataComponent<P : SectionDataComponentProps, S, ItemT> extends React.PureComponent<P, S> {

  // Implemented by subclasses
  getSectionData() : Array<SectionT<ItemT>> { 
      // returns an array of sections for a SectionList...
  }
  render() {
    // business logic component only.
    return null;
  }
}

Родительский компонент отслеживает их с помощью ref, а затем при необходимости вызывает getSectionData ().

Другие вопросы по теме