React-window: ИзмСнСния Π² вСрсии 2

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π° 29 июл. 2019  Β·  44ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ  Β·  Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: bvaughn/react-window

Π­Ρ‚ΠΎ ΠΎΠ±Ρ‰ΠΈΠΉ вопрос, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ своими ΠΏΠ»Π°Π½Π°ΠΌΠΈ Π½Π° прСдстоящий выпуск вСрсии 2.0 react-window .

ΠžΠ±Ρ€Π°Ρ‚Π½Π°Ρ связь привСтствуСтся ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ принята Π²ΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅. Π― ΠΏΡ€ΠΎΡˆΡƒ вас ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ссли я Π½Π΅ смогу ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΠΈΡ‚ΡŒ всС запросы. Π― ΠΏΠΎΡΡ‚Π°Ρ€Π°ΡŽΡΡŒ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ всС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ запросы Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ с Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚Π°, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ Π²ΠΎ врСмя выполнСния ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ обслуТивания.

Π― оТидаю, Ρ‡Ρ‚ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ с вСрсии 1 Π΄ΠΎ вСрсии 2 ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ сущСствСнных ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΊΠΎΠ΄Π° , ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΉ ΠΊΠΎΠ΄Π°. Из-Π·Π° этого, особСнно для ΠΊΠΎΠ΄Π° прилоТСния, я Π±Ρ‹ посовСтовал Π½Π΅ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄, Ссли Ρƒ вас Π½Π΅Ρ‚ вСской ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²Π°ΠΌ Π½ΡƒΠΆΠ½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° содСрТимого с динамичСским Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ).

Π― Ρ‚Π°ΠΊΠΆΠ΅ ΡΠΎΠ±ΠΈΡ€Π°ΡŽΡΡŒ Π·Π°ΠΊΡ€Π΅ΠΏΠΈΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠ΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π² Π΄ΠΎΠΌΠ΅Π½Π΅ response-window-v1.now.sh, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΈ Π½Π΅ Π±Ρ‹Π»ΠΈ потСряны ΠΏΡ€ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ Π΄ΠΎ вСрсии 2.


ОглавлСниС:
  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° мСньшСго количСства ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ²
  • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ API Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³Π° Ρ€Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚Π°
  • Π‘ΠΎΠ»ΡŒΡˆΠ΅ Π½Π΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½Ρ‹Ρ… списков
  • Волько сСтки ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ RTL
  • ИзмСнСния Π² сроках ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° onScroll

    * ΠŸΡ€ΠΎΡ‡ΠΈΠ΅ измСнСния / прСкращСния ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ

МСньшС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ²

Один ΠΈΠ· способов ΠΏΠΎΠΌΠΎΡ‡ΡŒ ΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒΡΡ со ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ - ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ количСство ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ . Π’ настоящСС врСмя я ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Π² вСрсии 2 Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ²:

  • SimpleList (Ρ€Π°Π½Π΅Π΅ FixedSizeList )

    • Π­Ρ‚ΠΎΡ‚ высокооптимизированный ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ списка слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° высота строк фиксирована (ΠΈ извСстна Π·Π°Ρ€Π°Π½Π΅Π΅).

  • List (Ρ€Π°Π½Π΅Π΅ DynamicSizeList )

    • Π­Ρ‚ΠΎΡ‚ список слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π° с динамичСским Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Π°Ρ‚, новостная Π»Π΅Π½Ρ‚Π°). Для этого трСбуСтся ResizeObserver API (ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΠΈΡ„ΠΈΠ»Π»).

  • Grid (Ρ€Π°Π½Π΅Π΅ VariableSizeGrid )

    • Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для Ρ‚Π°Π±Π»ΠΈΡ‡Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, элСктронных Ρ‚Π°Π±Π»ΠΈΡ†), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ ΠΊΠ°ΠΊ ΠΏΠΎ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠΉ, Ρ‚Π°ΠΊ ΠΈ ΠΏΠΎ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎΠΉ осям. Он ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ строки ΠΈ столбцы ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°, Π½ΠΎ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ автоматичСскоС ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅ ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΈΡ… Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ².


Π Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³ Ρ€Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚Π°

Одним ΠΈΠ· основных ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ с react-virtualized Π½Π° react-window Π±Ρ‹Π»ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ children ΠΊΠ°ΠΊ элСмСнты React (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, React.createElement(children, props)) ), Π° Π½Π΅ ΠΊΠ°ΠΊ свойства Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, children(props) ).

Для этого Π±Ρ‹Π»ΠΎ нСсколько ΠΌΠΎΡ‚ΠΈΠ²ΠΎΠ²:

  • React прСдоставляСт встроСнныС Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ для ΠΌΠ΅ΠΌΠΎΠΈΠ·Π°Ρ†ΠΈΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, React.memo , useMemo , shouldComponentUpdate ), поэтому ΠΌΠ½Π΅ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ Π°Π±ΡΡ‚Ρ€Π°ΠΊΡ†ΠΈΡŽ ΠΊΠ΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ для срСдств Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ элСмСнтов.
  • API-интСрфСйсы, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Ρ…ΡƒΠΊΠΈ ΠΈ саспСнс, «просто Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚Β» Π²Π½ΡƒΡ‚Ρ€ΠΈ срСдств Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ элСмСнтов.
  • ΠšΠ»ΡŽΡ‡ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ react-window Π½Π΅ трСбуя, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³Π° ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π» ΠΈΡ… (ΠΈ Π±Π΅Π· нСобходимости Π²Ρ‹Π·ΠΎΠ²Π° cloneElement ).

К соТалСнию, Π±Ρ‹Π»ΠΈ ΠΈ нСдостатки:

  • ВстроСнныС срСдства Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ элСмСнтов Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π·Π°Ρ‚Ρ€Π°Ρ‚. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΈΡ… Β«Ρ‚ΠΈΠΏΒ» (ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ) воссоздаСтся ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· ΠΏΡ€ΠΈ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³Π΅ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°, React ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Ρ€Π°Π·ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΈΡ… Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³-Π΄Π΅Ρ€Π΅Π²ΠΎ. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΡ‡ΠΈΡ‚ΡŒ людСй Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ…, Π΄Π°ΠΆΠ΅ Ссли ΠΎΠ½ΠΈ часто Π±ΠΎΠ»Π΅Π΅ ΡƒΠ΄ΠΎΠ±Π½Ρ‹.
  • ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ встроСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для закрытия Π² локальной области, для срСдств Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ элСмСнтов Π±Ρ‹Π»ΠΎ слоТнСС Π΄Π΅Π»ΠΈΡ‚ΡŒΡΡ состояниСм с родитСлями, трСбуя Ρ‚Π°ΠΊΠΈΡ… API, ΠΊΠ°ΠΊ itemData ΠΈ настраиваСмого экспорта сравнСния areEqual .

ΠŸΡ€ΠΈΠ½ΡΠ² Π²ΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π²Ρ‹ΡˆΠ΅ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚Ρ‹Π΅ ΠΏΠ»ΡŽΡΡ‹ ΠΈ минусы, я Ρ€Π΅ΡˆΠΈΠ» Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³Π° Ρ€Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚Π° для react-window . Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ , Ρ‡Ρ‚ΠΎ слоТныС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ , ΠΊΠ°ΠΊ это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ пСрСписан Π±ΠΎΠ»Π΅Π΅ Π»Π΅Π³ΠΊΠΎ:

const Example = ({ height, items, toggleItemActive, width }) => (
  <List
    height={height}
    itemCount={items.length}
    itemRenderer={({ index, key, style }) => {
      const item = items[index];
      return (
        <div key={key} onClick={() => toggleItemActive(index)} style={style}>
          {item.label} is {item.isActive ? "active" : "inactive"}
        </div>
      );
    }}
    itemSize={35}
    width={width}
  />
);

Π‘ΠΎΠ»ΡŒΡˆΠ΅ Π½Π΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ списка

Π Π°Π½Π΅Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ списка ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π»ΠΈ ΠΊΠ°ΠΊ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ, Ρ‚Π°ΠΊ ΠΈ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌΡ‹ ΠΌΠ°ΠΊΠ΅Ρ‚Π°. Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΈ обслуТиваниС, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ списки, я ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‰Ρƒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ layout="horizontal" .


ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° RTL

ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ сСтки Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ direction="RTL" , Π½ΠΎ списки - Π½Π΅Ρ‚ (ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΡƒ). Π­Ρ‚ΠΎΡ‚ компромисс дСлаСтся для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ списки Π±Ρ‹Π»ΠΈ мСньшС ΠΈ ΠΈΡ… Π±Ρ‹Π»ΠΎ Π»Π΅Π³Ρ‡Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ.


onItemsRendered ΠΈ onScroll измСнСния ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π°

ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ списка ΠΈ сСтки Π² настоящСС врСмя ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ Ρ€Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚Ρ‹ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° onItemsRendered ΠΈ onScroll . Π­Ρ‚ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹Π΅ Π²Ρ‹Π·ΠΎΠ²Ρ‹ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π½Π° этапС фиксации (послС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³Π° списка ΠΈΠ»ΠΈ сСтки). Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ всСгда бСзопасно Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΏΠΎΠ±ΠΎΡ‡Π½Ρ‹ΠΉ эффСкт (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΆΡƒΡ€Π½Π°Π»Π° Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠΈ) Π² ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° эти ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹Π΅ Π²Ρ‹Π·ΠΎΠ²Ρ‹, Π½ΠΎ Ρƒ Π½Π΅Π³ΠΎ Π΅ΡΡ‚ΡŒ ΠΈ обратная сторона: Π»ΡŽΠ±Ρ‹Π΅ синхронизированныС обновлСния ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π·Π° сСкунду («каскадный») Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³. .

ВСрсия 2 внСсСт измСнСния Π² ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ Π²Ρ‹Π·ΠΎΠ² onScroll для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. ΠžΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ Π²Ρ‹Π·ΠΎΠ² onScroll Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π²ΠΎ врСмя Ρ†ΠΈΠΊΠ»Π° ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ события, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ любоС ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ (с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ React) с собствСнным ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ списка ΠΈΠ»ΠΈ сСтки.

ΠžΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ Π²Ρ‹Π·ΠΎΠ² onItemsRendered Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΌΠ΅Π½Π΅Π½ ΠΎΠΏΠΎΡ€ΠΎΠΉ onItemsDisplayed , хотя ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π²ΠΎ врСмя Ρ†ΠΈΠΊΠ»Π° фиксации. Π­Ρ‚ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ сдСлано для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ списка ΠΌΠΎΠ³ Π±ΠΎΠ»Π΅Π΅ агрСссивно ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³Π° Π·Π° счСт ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³Π° с ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ΠΎΠΌ оТидания ΠΈ использования ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Ρ… API, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° отобраТСния .


Π”Ρ€ΡƒΠ³ΠΈΠ΅ измСнСния / прСкращСния ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Ρ€Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚Π°

Π•ΡΡ‚ΡŒ нСсколько ΠΎΠΆΠΈΠ΄Π°ΡŽΡ‰ΠΈΡ… устарСвания (с прСдупрСТдСниями DEV), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΡƒΠ΄Π°Π»Π΅Π½Ρ‹:

  • innerTagName ΠΈ outerTagName для всСх ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² списков ΠΈ сСток. (ВмСсто этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ innerElementType ΠΈ outerElementType .)
  • overscanCount , overscanColumnsCount ΠΈ overscanRowsCount для ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° сСтки. (ВмСсто этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ overscanColumnCount ΠΈ overscanRowCount .)
  • overscanCount Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ΄Π°Π»Π΅Π½ΠΎ для ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² списка Π² ΠΏΠΎΠ»ΡŒΠ·Ρƒ динамичСского ΠΌΠ΅Ρ‚ΠΎΠ΄Π° пСрСсканирования.
  • значСния "ΠΏΠΎ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΠΈ" ΠΈ "ΠΏΠΎ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΠΈ" для direction . (Они Π±Ρ‹Π»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½Ρ‹ Π² layout , Π½ΠΎ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΡƒΠ΄Π°Π»Π΅Π½Ρ‹ Π² вСрсии 2.)
  • ΠžΠΏΠΎΡ€Π° itemData (ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ ΠΎΠΏΠΎΡ€Π° data пСрСданная срСдствам Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ элСмСнтов) Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ΄Π°Π»Π΅Π½Π°, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ API ΠΎΠΏΠΎΡ€Ρ‹ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³Π° большС Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ этого.
  • ΠžΠΏΠΎΡ€Π° useIsScrolling (ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ ΠΎΠΏΠΎΡ€Π° isScrolling пСрСданная срСдствам Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ элСмСнтов) Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ΄Π°Π»Π΅Π½Π°, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ измСнСния Π² ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³Π΅ ΠΈ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ΅ отобраТСния ΡΠ΄Π΅Π»Π°ΡŽΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ этого Π±ΠΎΠ»Π΅Π΅ дорогостоящСй.
  • ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ выравнивания ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΊΠΈ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ измСнятся. Π Π°Π½Π΅Π΅ Π½Π°Π·Ρ‹Π²Π°Π²ΡˆΠ΅Π΅ΡΡ Β«autoΒ» Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ Β«ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌΒ». НовоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π±ΡƒΠ΄Π΅Ρ‚ Β«ΡƒΠΌΠ½Ρ‹ΠΌΒ» (Π° Π½Π΅ «автоматичСским»).

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Π²Ρ‹ΡˆΠ΅ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»Π΅Π½Π½Ρ‹Ρ… ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΡ… свойств ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ Π΄Ρ€ΡƒΠ³ΠΈΡ… Π·Π°ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, Π½ΠΎ я всС Ρ€Π°Π²Π½ΠΎ ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΡΡŽ ΠΈΡ… здСсь для ΠΏΠΎΠ»Π½ΠΎΡ‚Ρ‹ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Ρ‹.

πŸ‘‹ help wanted πŸ’¬ discussion

Π‘Π°ΠΌΡ‹ΠΉ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’ нашСм случаС Π½Π° ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… устройствах ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ списки. ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΈΡ… для бСсконСчной ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‡ΠΈΠ²Π°Π΅ΠΌΠΎΠΉ карусСли, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для управлСния. Π£ IMO Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Π²Π΅Ρ‰ΡŒ Π½Π° мобильном Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π΅.

ВсС 44 ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’ нашСм случаС Π½Π° ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… устройствах ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ списки. ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΈΡ… для бСсконСчной ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‡ΠΈΠ²Π°Π΅ΠΌΠΎΠΉ карусСли, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для управлСния. Π£ IMO Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Π²Π΅Ρ‰ΡŒ Π½Π° мобильном Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π΅.

Бпасибо, Ρ‡Ρ‚ΠΎ подСлились ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ использования @istarkov. Π”Π΅Π»ΠΎ Π½Π΅ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ я Π½Π΅ Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ допустимыС Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ использования Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠΊΠΎΠ½. Π― просто Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‚ΡΡ Π³ΠΎΡ€Π°Π·Π΄ΠΎ Ρ€Π΅ΠΆΠ΅. (Π”Π°ΠΆΠ΅ Π² случаС карусСлСй ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΡŽ со стрСлками Π²Π»Π΅Π²ΠΎ / Π²ΠΏΡ€Π°Π²ΠΎ, которая Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ "ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΊΠΈ" ΠΎΠΊΠΎΠ½ Π½Π° основС событий.) Π― Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π»ΡƒΡ‡ΡˆΠΈΠΌ способом (для мСня) ΠΎΡ‚ΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ v2, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠΎΠΌΠΏΠ΅Π½ΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ слоТности, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ я ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³Π°, динамичСского опрСдСлСния Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² ΠΈ Ρ‚. Π΄.

МнС ΠΎΡ‡Π΅Π½ΡŒ нравится этот Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ, надСюсь, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ Π±ΠΎΠ»Π΅Π΅ простому, Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌΡƒ ΠΈ простому ΠΊΠΎΠ΄Ρƒ.

ΠžΡ‚Π»ΠΈΡ‡Π½ΠΎ. Но мСня ΠΌΠ°Π»ΠΎ бСспокоит ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ списка ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°. Π’Ρ‹ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ список ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π½Π° DynamicList, Π½ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с динамичСским списком, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΈΡ‚ΡŒ Π΄ΠΎ элСмСнта, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ довольно ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², ΠΈ Ρ‚Π°ΠΊΠΎΠ΅ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ со Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ, поэтому Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€Π΅Π΄ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ссли Окно Ρ€Π΅Π°ΠΊΡ†ΠΈΠΈ соотвСтствуСт вашим потрСбностям.
Вторая ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ я Π²ΠΈΠΆΡƒ, - это ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ динамичСского списка. Если Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΡƒΡŽ ​​ТС ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ для динамичСского списка, Ρ‡Ρ‚ΠΎ ΠΈ для списка ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ Π½Π΅Π³ΠΎ, Π΄Π°ΠΆΠ΅ Ссли Π²Ρ‹ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚Π΅ scrollToItem, Π½ΠΎ Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½Ρ‹. странныС ситуации, ΠΊΠΎΠ³Π΄Π° динамичСский список Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ ΠΈ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΊΡƒ Π΄ΠΎ элСмСнтов, список ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ высоту элСмСнтов.

Π’Ρ‹ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ список ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π½Π° DynamicList, Π½ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с динамичСским списком, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΈΡ‚ΡŒ Π΄ΠΎ элСмСнта

Π― Π½Π΅ Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ это Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅, просто ΠΎΠ΄Π½ΠΎ ΠΈΠ· Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΡ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ. Π£ мСня Π΅ΡΡ‚ΡŒ ΠΈΠ΄Π΅ΠΈ, ΠΊΠ°ΠΊ я ΠΌΠΎΠ³Ρƒ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚ΡŒ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. НахоТу Π»ΠΈ я врСмя, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Π·ΡΡ‚ΡŒΡΡ Π·Π° это - Π΄Ρ€ΡƒΠ³ΠΎΠΉ вопрос: smile:

Вторая ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ я Π²ΠΈΠΆΡƒ, - это ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ динамичСского списка. Если Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΡƒΡŽ ​​ТС ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ для динамичСского списка, Ρ‡Ρ‚ΠΎ ΠΈ для списка ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ Π½Π΅Π³ΠΎ, Π΄Π°ΠΆΠ΅ Ссли Π²Ρ‹ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚Π΅ scrollToItem, Π½ΠΎ Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½Ρ‹. странныС ситуации, ΠΊΠΎΠ³Π΄Π° динамичСский список Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ ΠΈ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΊΡƒ Π΄ΠΎ элСмСнтов, список ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ высоту элСмСнтов.

Π‘Π»ΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Π±ΡƒΠ΄Π΅Ρ‚ Π»ΠΈ ΠΎΠ½ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ. ΠŸΠΎΡ…ΠΎΠΆΠ΅, Ρ‡Ρ‚ΠΎ динамичСский список Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ большС, поэтому, вСроятно, ΠΎΠ½ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ ΠΆΠ΅ Ρ…ΠΎΡ€ΠΎΡˆΠΎ. ΠœΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π·Π½ΠΈΡ†Π° Π±ΡƒΠ΄Π΅Ρ‚ сущСствСнная, Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈ Π½Π΅Ρ‚. Π― Ρ…ΠΎΡ‡Ρƒ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π΅Ρ‰ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρƒ мСня Π½Π΅Ρ‚ Π² настоящСС врСмя, ΠΈ я Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ ΠΌΠ½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ объСм, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Если Π²Ρ‹ Π² настоящСС врСмя Π΄ΠΎΠ²ΠΎΠ»ΡŒΠ½Ρ‹ списком ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Π½Π΅Ρ‚ ΠΏΡ€ΠΈΡ‡ΠΈΠ½ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π½Π° v2 (ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, Π² блиТайшСС врСмя).

@bvaughn МнС каТСтся, это докумСнтация!
Π’Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ Π½Π°Π΄ этим с ΠΏΡ€ΠΎΡˆΠ»ΠΎΠ³ΠΎ Π»Π΅Ρ‚Π°? ;-)

На Π±ΠΎΠ»Π΅Π΅ ΡΠ΅Ρ€ΡŒΠ΅Π·Π½ΠΎΠΌ Π½ΠΎΡ‚Π΅ - я Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³ Ρ€Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚Π° ΠΈΠΌΠ΅Π΅Ρ‚ смысл Π² этом контСкстС, хотя я Π½Π΅ Ρ„Π°Π½Π°Ρ‚.

НСт, я написал это сСгодня ΡƒΡ‚Ρ€ΠΎΠΌ Π― устал.

Π― Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³ Ρ€Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚Π° ΠΈΠΌΠ΅Π΅Ρ‚ смысл Π² этом контСкстС, хотя я Π½Π΅ Ρ„Π°Π½Π°Ρ‚.

ΠœΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π²Ρ‹ Π½Π΅ Ρ„Π°Π½Π°Ρ‚?

ΠœΠΎΠΆΠ΅Ρ‚ Π»ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ списка / сСтки ΠΈΠΌΠ΅Ρ‚ΡŒ смысл Π² качСствС Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ AutoSizer (react-virtualized-auto-sizer)?

Π― использовал ΠΊΠ°ΠΊ react-virtualized, Ρ‚Π°ΠΊ ΠΈ response-window для Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½Ρ‹Ρ… списков, ΠΈ ΡΡ‡ΠΈΡ‚Π°ΡŽ, Ρ‡Ρ‚ΠΎ API-интСрфСйс response-window Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΡ‰Π΅. Π₯отя я ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎ понимаю Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΎΡ‚ΠΊΠ°Π·Π° ΠΎΡ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Π² Π½Π°Π΄Π΅ΠΆΠ΄Π΅ Π½Π° Π±ΠΎΠ»Π΅Π΅ простой API.

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° сСти всС Π΅Ρ‰Π΅ планируСтся. Π’Ρ‹Π±ΠΈΡ€Π°ΡŽ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΡƒΡŽ ΠΎΠΏΠΎΡ€Ρƒ, Π½Π΅ совсСм. Π― Π½Π΅ Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ это ΠΈΠΌΠ΅Π΅Ρ‚ смысл.

@bvaughn МнС Π²ΠΎΠΎΠ±Ρ‰Π΅ нравится Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³ Ρ€Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚Π°, ΠΈ ΠΎΠ½ΠΈ Ρ€Π΅ΡˆΠ°Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡ΠΈΠ»ΠΈ, Π½ΠΎ я Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΏΠΎΠΎΡ‰Ρ€ΡΡŽΡ‚ Π²ΡΡ‚Ρ€ΠΎΠ΅Π½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΈΠ»ΠΈ Π½Π΅ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΊΡƒΡ‡Ρƒ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠΈ. πŸ€” Π›ΡŽΠ±Π°Ρ ошибка здСсь лоТится Π½Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. πŸ™‚

ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ»Π°Π΄ΠΎΡ‡Π½ΡƒΡŽ сСтку?

@nikitapilgrim НСт. Π― Π±Ρ‹ посовСтовал просто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Masonry ΠΈΠ· react-virtualized

https://github.com/bvaughn/react-virtualized/blob/master/docs/Masonry.md

спасибо, Π½ΠΎ Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с react-virtualized?

@nikitapilgrim Ага . πŸ‘
React-virtualized ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ мноТСство Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅Ρ‚ Π² response-window.

ОбъСм ΠΎΠΊΠ½Π° Ρ€Π΅Π°ΠΊΡ†ΠΈΠΈ Ρ€Π΅Π·ΠΊΠΎ сокращСн, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΡΡ€Π΅Π΄ΠΎΡ‚ΠΎΡ‡ΠΈΡ‚ΡŒΡΡ Π½Π° Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚ мСньшС ΠΈ быстрСС . πŸ˜‰

Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΡ‚ react-virtualized, я ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽ Π²Π°ΠΌ ΠΏΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ этого - это ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ отличная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°!

Π― наткнулся Π½Π° react-window ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ искал Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ этой react-virtualized babel 7 ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ . Π― ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ react-virtualized Masonry Π½ΠΎ послС обновлСния babel большС Π½Π΅ ΠΌΠΎΠ³Ρƒ.

Π—Π΄Π΅ΡΡŒ Π½Π΅ мСсто ΡΠΎΠΎΠ±Ρ‰Π°Ρ‚ΡŒ ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ… с react-virtualized.

БогласСн @bvaughn. Однако Π²Ρ‹ ΠΈ @babangsund ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠ»ΠΈ Π½Π° @nikitapilgrim Π²Ρ‹ΡˆΠ΅, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Masonry Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π² react-window Π° вмСсто этого Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ react-virtualized . Однако, Ссли ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ послСдниС [email protected] ΠΈ [email protected] (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, create-react-app ), react-virtualized Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ.

Π― полагаю, Ρ‡Ρ‚ΠΎ это полСзная информация для всСх, ΠΊΡ‚ΠΎ ΠΏΠΎΠΏΠ°Π΄Π΅Ρ‚ Π² Ρ‚Ρƒ ΠΆΠ΅ ΠΊΡ€ΠΎΠ»ΠΈΡ‡ΡŒΡŽ Π½ΠΎΡ€Ρƒ.
Β― \ _ (ツ) _ / Β―

эй, я Ρ…ΠΎΡ‡Ρƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ список динамичСского Ρ€Π°Π·ΠΌΠ΅Ρ€Π°, Π³Π΄Π΅ я ΠΌΠΎΠ³Ρƒ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Π²Π΅Ρ€ΡΠΈΡŽ 2, ΠΈΠ»ΠΈ ΠΌΠ½Π΅ придСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ React Virtualise?
image

Ρ‚Π°ΠΊ выглядит ΠΌΠΎΠΉ список со списком ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°

Π­Ρ‚ΠΎ Π½Π΅ общая ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ. ΠžΡΡ‚Π°Π²Π»ΡΠΉΡ‚Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅.

ΠžΠ±Ρ€Π°Ρ‚Π½Π°Ρ связь привСтствуСтся

Π― ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ react-window Π² ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π΅, ΠΏΠΎΡ…ΠΎΠΆΠ΅ΠΌ Π½Π° Ρ‚Ρ€Π΅Π»Π»ΠΎ, ΠΈ Π²ΠΎΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ мысли:

Π Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³ Ρ€Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚Π°

Π­Ρ‚ΠΎ каТСтся Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΈΠ·-Π·Π° простоты ΠΈ позволяСт ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ упомянутого нСдостатка. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, api Π±ΡƒΠ΄Π΅Ρ‚ большС ΠΏΠΎΡ…ΠΎΠΆ Π½Π° FlatList ΠΎΡ‚ react-native. Π― помню, ΠΊΠ°ΠΊ Ρ‡ΠΈΡ‚Π°Π» обсуТдСниС Π½Π° https://github.com/bvaughn/react-window/issues/85.

МСньшС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ²
Π‘ΠΎΠ»ΡŒΡˆΠ΅ Π½Π΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ списка

Π― Ρ€Π΅ΡˆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π³ΠΎΠ»ΠΎΡΡƒΡŽ ΠΏΡ€ΠΎΡ‚ΠΈΠ² удалСния horizontal ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΈ VariableSizeList . Как Π²Ρ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚Π΅, это Π΄Π²Π° основных, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ я ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ. НСуТСли ΠΈΡ… рСализация слишком ΠΎΠ±Ρ€Π΅ΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π° для поддСрТания? Если Π½Π΅Ρ‚, я надСюсь, Π²Ρ‹ смоТСтС ΠΈΡ… ΠΏΠ΅Ρ€Π΅ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΈ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ сСбС.

Π£ мСня Π½Π΅Ρ‚ Ρ‚Π²Π΅Ρ€Π΄ΠΎΠ³ΠΎ мнСния ΠΏΠΎ ΠΏΠΎΠ²ΠΎΠ΄Ρƒ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ overscanCount мСня Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ бСспокоит, Π½ΠΎ я Π΅Ρ‰Π΅ Π½Π΅ сталкивался со случаями использования, ΠΊΠΎΠ³Π΄Π° Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎΡΡŒ настраиваСмоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ, вСроятно, это Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ.

ΠŸΡ€ΠΈΠ²Π΅Ρ‚ @bvaughn! Бпасибо Π·Π° этот ΠΏΠ°ΠΊΠ΅Ρ‚! Π― ΡΠΎΠ±ΠΈΡ€Π°ΡŽΡΡŒ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π²Π΅Ρ€ΡΠΈΡŽ 2 Π² свой ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π΅. Π’Ρ‹ Π½Π΅ Π·Π½Π°Π΅Ρ‚Π΅, ΠΊΠΎΠ³Π΄Π° это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½ΠΎ?

Бпасибо Π·Π° эту Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ ΠΈ Π·Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚Π΅ΡΡŒ своим ΠΏΠ»Π°Π½ΠΎΠΌ Π½Π° Π±ΡƒΠ΄ΡƒΡ‰Π΅Π΅, это ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Π½Π°ΠΌ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ тСхничСский Π΄ΠΎΠ»Π³.

Π•ΡΡ‚ΡŒ Π»ΠΈ «простой» способ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ повСдСния WindowScroller с использованиСм Π½Π΅Π΄Π°Π²Π½Π΅ΠΉ вСрсии react-window ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½ΠΈΡ… вСрсий 2?

Если это Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π±ΡƒΠ΄Π΅Ρ‚ Π»ΠΈ это Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ этой вСрсии 2? ΠΈΠ»ΠΈ это ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎΠ·ΠΆΠ΅?

Мой контСкст Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΉ ΠΌΠ°ΠΊΠ΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π½ΠΈΠΆΠ½ΠΈΠΉ ΠΊΠΎΠ»ΠΎΠ½Ρ‚ΠΈΡ‚ΡƒΠ», ΠΈ ΠΏΡ€ΠΈ использовании соврСмСнного ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°, Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΊΠ°ΠΊ DynamicSizeList Π±ΡƒΠ΄Π΅Ρ‚ Π²Π²Π΅Π΄Π΅Π½Π° вторая полоса ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΊΠΈ (ΠΎΠ΄Π½Π° для страницы ΠΈ ΠΎΠ΄Π½Π° для списка ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ²)

ΠžΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚. Π‘ Π½Π΅Ρ‚Π΅Ρ€ΠΏΠ΅Π½ΠΈΠ΅ΠΌ ΠΆΠ΄Ρƒ динамичСских списков высот ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ - Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ я написал ΠΊΡƒΡ‡Ρƒ настраиваСмой Π»ΠΎΠ³ΠΈΠΊΠΈ для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΡ‹Ρ… высот строк ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ список. НадСюсь, с этой Π½ΠΎΠ²ΠΎΠΉ вСрсиСй я смогу ΡƒΡΡ‚Ρ€Π°Π½ΠΈΡ‚ΡŒ эту Π»ΠΎΠ³ΠΈΠΊΡƒ. Бпасибо Π·Π° Π²Π°ΡˆΡƒ Ρ€Π°Π±ΠΎΡ‚Ρƒ!

@ltkn @mrdanimal

Π£ΠΆΠ΅ Π΅ΡΡ‚ΡŒ способ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ скроллСр ΠΎΠΊΠ½Π°:
https://github.com/bvaughn/react-window/issues/30#issuecomment -428868071

Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π±Π΅ΡΠΊΠΎΠ½Π΅Ρ‡Π½ΡƒΡŽ ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΊΡƒ Π² ΠΎΠ±ΠΎΠΈΡ… направлСниях, Π²Π»Π΅Π²ΠΎ ΠΈΠ»ΠΈ Π²ΠΏΡ€Π°Π²ΠΎ !!!

Если Ρƒ нас Π΅ΡΡ‚ΡŒ WindowScroller Π±Π΅Π· зависимости ΠΎΡ‚ react-virtualized , это Π±ΡƒΠ΄Π΅Ρ‚ Π·Π΄ΠΎΡ€ΠΎΠ²ΠΎ. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ†Π΅Π»ΡŒ react-window сдСлала Π΅Π³ΠΎ Π±ΠΎΠ»Π΅Π΅ эффСктивным ΠΈ мСньшим количСством ΠΊΠΎΠ΄Π° ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с react-virtualized Π˜Ρ‚Π°ΠΊ, я Π½Π΅ Ρ…ΠΎΡ‡Ρƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ WindowScroller ΠΈΠ· react-virtualized . ВмСсто этого ΠΈΡ‰ΠΈΡ‚Π΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ react-virtualized-auto-sizer .

Π—Π°Ρ€Π°Π½Π΅Π΅ спасибо.

@prabusamvel Ρ…ΠΌ ..
Π’ Ρ‡Π΅ΠΌ прСимущСство ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π°?

Π˜Π³Ρ€Π°Π» с Π½ΠΎΠ²Ρ‹ΠΌ DynamicSizeList. ΠžΡ‡Π΅Π½ΡŒ ΠΊΡ€ΡƒΡ‚ΠΎ! Π― Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΌ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠ΅ΠΌ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π² Ρ‚ΠΈΠΏ направлСния Β«ttbΒ» ΠΈ Β«bttΒ» (свСрху Π²Π½ΠΈΠ·, снизу Π²Π²Π΅Ρ€Ρ…). Π’ настоящСС врСмя Π½Π΅Ρ‚ чистого способа Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ список, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прокручиваСтся Π²Π²Π΅Ρ€Ρ…, Π½ΠΎ всС Π΄Ρ€ΡƒΠ³ΠΈΠ΅ направлСния ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ.

@toddmacintyre Π― Π½Π΅ ΠΌΠΎΠ³Ρƒ Π½Π°ΠΉΡ‚ΠΈ эту Π²Π΅Ρ€ΡΠΈΡŽ 2.

@muhammedmagdi npm install react-window@next

Π‘Ρ‹Π»ΠΎ Π±Ρ‹ Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Ссли Π±Ρ‹ вСрсия 2 ΠΌΠΎΠ³Π»Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ структуры DOM, Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹Π΅ здСсь спСцификациСй - https://www.w3.org/TR/wai-aria-1.1/#grid, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ β„– 217 всС Π΅Ρ‰Π΅ остаСтся для нас ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ. Насколько я ΠΌΠΎΠ³Ρƒ ΡΡƒΠ΄ΠΈΡ‚ΡŒ, вашС ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎ вСрсии 2 прямо сСйчас - Π½Π΅Ρ‚.

@mjurkowski @bvaughn yarn add react-window@next устанавливаСт 1.6.0-alpha.1 . Π’Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ пСсочницы динамичСского списка https://react-window-next.now.sh/#/examples/list/dynamic -size Π²Ρ‹Π΄Π°Π΅Ρ‚ Error importing GitHub repository: Could not find package.json

Как насчСт Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ index Π² сСтку - ΠΏΠΎΠΊΠ° ΠΎΠ½Π° Π΅ΡΡ‚ΡŒ? :)

Для части нашСго прилоТСния трСбуСтся сСтка с Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°ΠΌΠΈ столбцов ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡˆΠΈΡ€ΠΈΠ½Ρ‹. ΠœΡ‹ достигли этого, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ список ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π² сочСтании с сСткой ΠΈ синхронизируя ΠΈΡ… ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΊΡƒ.

Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½Ρ‹Ρ… списков ΠΏΠΎΠΌΠ΅ΡˆΠ°Π΅Ρ‚ Π½Π°ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ этот ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс (ΠΈΠ»ΠΈ, ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, Π½Π°ΠΌ придСтся ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΅Π³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ 2 сСтки, Π³Π΄Π΅ сСтка Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° столбца ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠ΄Π½Ρƒ строку.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ‚ΠΎΠ²Π°Ρ€ выглядит ΠΏΠΎΡ‚Ρ€ΡΡΠ°ΡŽΡ‰Π΅. Но ΠΌΠ½Π΅ Π½ΡƒΠΆΠ½Ρ‹ ΠΊΠ°ΠΊ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅, Ρ‚Π°ΠΊ ΠΈ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅, поэтому, ΠΊ Π²Π°ΡˆΠ΅ΠΌΡƒ свСдСнию, я создал свой собствСнный: https://www.npmjs.com/package/react-infinite-grid-scroller. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΌΠ°ΠΊΠ΅Ρ‚ сСтки, ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Ρ‡ΠΈΠΊΠΈ Ρ€Π΅Π°ΠΊΡ†ΠΈΠΈ, IntersectionObserver ΠΈ requestIdleCallback.

ΠžΠ±Ρ€Π°Ρ‚Π½Π°Ρ связь привСтствуСтся.

Π£ мСня Ρ‚Π°ΠΊΠΎΠ΅ чувство, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π»ΠΈΠΏΠΊΠΈΡ… элСмСнтов Π±Ρ‹Π»Π° Π±Ρ‹ ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΌ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΊ response-window. Π­Ρ‚ΠΎ довольно распространСнный Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ использования, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π»Π΅Π³ΠΊΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ для списков, Ρ‚Π°ΠΊ ΠΈ для сСток.

API ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ:

<Grid
    // First 2 columns are sticky
    stickyLeft={2}
    // Last column is not sticky (default value)
    stickyRight={0}
    // First and last rows are sticky
    stickyTop={1}
    stickyBottom={1}
/>

Двумя ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌΠΈ элСмСнтами, Π·Π°ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΌΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π»ΠΈΠΏΠΊΠΎΡΡ‚ΡŒ, ΡΠ²Π»ΡΡŽΡ‚ΡΡ:

  1. ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°ΠΉΡ‚Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ ячСйки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ залипшими, Ссли ΠΎΠ½ΠΈ находятся Π²Π½Π΅ ΠΎΠΊΠ½Π° Π½Π° оси, ΠΎΠ½ΠΈ Π½Π΅ Π·Π°Π»ΠΈΠΏΠ°ΡŽΡ‚
  2. ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ position: sticky вмСсто absolute ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ margin-x вмСсто left ΠΈ top для оси, которая Π½Π΅ являСтся Π»ΠΈΠΏΠΊΠΎΠΉ

Π‘Ρ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ каТСтся Ρ€Π°Π·ΡƒΠΌΠ½ΠΎΠΉ:

  • ΠŸΠ»ΠΎΡ‰Π°Π΄ΡŒ основания минимальна
  • Никакого сущСствСнного влияния Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ (просто отрисовка Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… строк / столбцов)
  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠ² отличная, Π° Ρ‚Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ position: sticky видят ΠΎΠ±Ρ‹Ρ‡Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ.

Если Π²Ρ‹ считаСтС, Ρ‡Ρ‚ΠΎ этот Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ использования слишком спСцифичСн для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΊΠ°ΠΊ Π΅ΡΡ‚ΡŒ, ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΌ компромиссом Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡƒΠ½ΠΊΡ‚Π° 1. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, слСдуСт Π»ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ ячСйку, ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π»Π΅Π³ΠΊΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π·Π°ΠΊΡ€Π΅ΠΏΠ»Π΅Π½ΠΈΠ΅.

Π‘ΡƒΠ΄Ρƒ Ρ€Π°Π΄ ΠΏΠΎΠΌΠΎΡ‡ΡŒ ΠΏΡ€ΠΈ нСобходимости.

Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ автоматичСскоС ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅ ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΈΡ… Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ².

Π― Ρ‡ΡƒΠ²ΡΡ‚Π²ΡƒΡŽ, Ρ‡Ρ‚ΠΎ это довольно большой нСдостаток. ΠŸΠΎΡ‡Ρ‚ΠΈ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ сСтки, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ я написал, ΠΌΠ½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ 3 ΠΈΠ»ΠΈ 4 столбца с фиксированной ΡˆΠΈΡ€ΠΈΠ½ΠΎΠΉ (для ΠΌΠ΅Ρ‚ΠΊΠΈ состояния, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΡ€ΠΈΠ·Ρ‹Π²ΠΎΠ² ΠΊ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡŽ ΠΈ Ρ‚. Π”.) И 1 столбСц с динамичСской ΡˆΠΈΡ€ΠΈΠ½ΠΎΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅ доступноС пространство.

Π― понимаю, Ρ‡Ρ‚ΠΎ Β«Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚Β» Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ это Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ с Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Autosizer - Π±Ρ‹Π»ΠΎ Π±Ρ‹ просто Ρ…ΠΎΡ€ΠΎΡˆΠΎ, Ссли Π±Ρ‹ эти Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ использования Π±Ρ‹Π»ΠΈ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΌΠ°Π½Ρ‹, Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ для Ρ‚Π΅Ρ…, ΠΊΠΎΠΌΡƒ Π½ΡƒΠΆΠ΅Π½ динамичСский столбСц, Π½ΠΎ Π½Π΅ Ρ…ΠΎΡ‡Ρƒ Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ всСго Π±Π°Π³Π°ΠΆΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ½ нСсСт с собой.

Π±Ρ‹Π»ΠΎ Π±Ρ‹ Ρ…ΠΎΡ€ΠΎΡˆΠΎ, Ссли Π±Ρ‹ эти Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ использования Π±Ρ‹Π»ΠΈ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΌΠ°Π½Ρ‹, Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ для Ρ‚Π΅Ρ…, ΠΊΠΎΠΌΡƒ Π½ΡƒΠΆΠ΅Π½ динамичСский столбСц.

ΠŸΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ понят - Π½ΠΎ практичСски говоря, это ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… усилий , ΠΈ эта Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π±Ρ‹Π»Π° ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ любви (Π° Π½Π΅ ΠΎΠΏΠ»Π°Ρ‡ΠΈΠ²Π°Π΅ΠΌΡ‹ΠΌ усилиСм). К соТалСнию, Ρƒ мСня Π΄Π°ΠΆΠ΅ Π½Π΅ Π±Ρ‹Π»ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΡ‚ΡŒ ΠΌΠΎΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹Π΅ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ v2, Π½Π΅ говоря ΡƒΠΆΠ΅ ΠΎ Ρ‡Π΅ΠΌ-Ρ‚ΠΎ Π±ΠΎΠ»Π΅Π΅ агрСссивном. 😞

Π±Ρ‹Π»ΠΎ Π±Ρ‹ Ρ…ΠΎΡ€ΠΎΡˆΠΎ, Ссли Π±Ρ‹ эти Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ использования Π±Ρ‹Π»ΠΈ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΌΠ°Π½Ρ‹, Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ для Ρ‚Π΅Ρ…, ΠΊΠΎΠΌΡƒ Π½ΡƒΠΆΠ΅Π½ динамичСский столбСц.

ΠŸΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ понят - Π½ΠΎ практичСски говоря, это ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… усилий , ΠΈ эта Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π±Ρ‹Π»Π° ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ любви (Π° Π½Π΅ ΠΎΠΏΠ»Π°Ρ‡ΠΈΠ²Π°Π΅ΠΌΡ‹ΠΌ усилиСм). К соТалСнию, Ρƒ мСня Π΄Π°ΠΆΠ΅ Π½Π΅ Π±Ρ‹Π»ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΡ‚ΡŒ ΠΌΠΎΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ _scoped down_ v2, Π½Π΅ говоря ΡƒΠΆΠ΅ ΠΎ Ρ‡Π΅ΠΌ-Ρ‚ΠΎ Π±ΠΎΠ»Π΅Π΅ агрСссивном. 😞

Ага. Π― понимаю. НадСюсь, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΈΠ΅ усилия ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ прСдприняты сообщСством.

Π‘Ρ‹Π»ΠΎ Π±Ρ‹ Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎ, Π½ΠΎ ΠΏΠΎ ΠΌΠΎΠ΅ΠΌΡƒ ΠΎΠΏΡ‹Ρ‚Ρƒ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±Ρ‹Π²Π°Π΅Ρ‚: smile:

МнС Π½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ WindowScroller с DynamicSizedList, вСроятно, ΠΈΠ·-Π·Π° своСврСмСнного Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³Π°, ΠΈΠ·-Π·Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ scrollTo Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π» ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ. Π‘ΡƒΠ΄Π΅Ρ‚ Π»ΠΈ это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π² Π½ΠΎΠ²ΠΎΠΉ вСрсии?

Π― принял Ρ‚ΠΎΡ‚ Ρ„Π°ΠΊΡ‚, Ρ‡Ρ‚ΠΎ Ρƒ мСня Π½Π΅Ρ‚ Π½ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Π½ΠΈ энСргии, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ это усилиС. Если ΠΊΡ‚ΠΎ-Ρ‚ΠΎ Π·Π°Ρ…ΠΎΡ‡Π΅Ρ‚ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ Π½Π°Ρ‡Π°Ρ‚ΡƒΡŽ ΠΌΠ½ΠΎΠΉ Π²Π΅Ρ‚ΠΊΡƒ, я Π±ΡƒΠ΄Ρƒ Ρ€Π°Π΄ вашСй ΠΏΠΎΠΌΠΎΡ‰ΠΈ. (Π‘ΠΌ. Π’Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ β„– 6 для получСния ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ List ΠΈ Grid Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ своСврСмСнных ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΉ.)

ΠŸΡ€ΠΈΠ²Π΅Ρ‚ @bvaughn ,
Π― создал обсуТдСниС Π½Π° своСй Π²ΠΈΠ»ΠΊΠ΅ с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ случайными Π·Π°ΠΌΠ΅Ρ‚ΠΊΠ°ΠΌΠΈ.
Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚Π΅ ΠΌΠ½Π΅, Ссли Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π² спискС ΠΈΠ»ΠΈ это Π½Π΅Π²Π΅Ρ€Π½ΠΎ. Π― дополню список, ΠΊΠΎΠ³Π΄Π° добьюсь прогрСсса.

ΠŸΠΎΡ…ΠΎΠΆΠ΅ Π½Π° Ρ…ΠΎΡ€ΠΎΡˆΠΈΠ΅ Π²Π΅Ρ‰ΠΈ

Π‘Ρ‹Π»Π° Π»ΠΈ эта страница ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ?
0 / 5 - 0 Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ