ΠΡΠΎ ΠΎΠ±ΡΠΈΠΉ Π²ΠΎΠΏΡΠΎΡ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ΄Π΅Π»ΠΈΡΡΡΡ ΡΠ²ΠΎΠΈΠΌΠΈ ΠΏΠ»Π°Π½Π°ΠΌΠΈ Π½Π° ΠΏΡΠ΅Π΄ΡΡΠΎΡΡΠΈΠΉ Π²ΡΠΏΡΡΠΊ Π²Π΅ΡΡΠΈΠΈ 2.0 react-window
.
ΠΠ±ΡΠ°ΡΠ½Π°Ρ ΡΠ²ΡΠ·Ρ ΠΏΡΠΈΠ²Π΅ΡΡΡΠ²ΡΠ΅ΡΡΡ ΠΈ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈΠ½ΡΡΠ° Π²ΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅. Π― ΠΏΡΠΎΡΡ Π²Π°Ρ ΠΏΠΎΠ½ΡΡΡ, Π΅ΡΠ»ΠΈ Ρ Π½Π΅ ΡΠΌΠΎΠ³Ρ ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΠΈΡΡ Π²ΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ. Π― ΠΏΠΎΡΡΠ°ΡΠ°ΡΡΡ ΡΠ΄Π΅Π»Π°ΡΡ Π²ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ΅, ΡΡΠΎΠ±Ρ ΡΠΎΠΏΠΎΡΡΠ°Π²ΠΈΡΡ Π·Π°ΠΏΡΠΎΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ Ρ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ ΠΏΠ°ΠΊΠ΅ΡΠ°, ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π½ΠΈΡ.
Π― ΠΎΠΆΠΈΠ΄Π°Ρ, ΡΡΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Ρ Π²Π΅ΡΡΠΈΠΈ 1 Π΄ΠΎ Π²Π΅ΡΡΠΈΠΈ 2 ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°ΡΡ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΊΠΎΠ΄Π° , ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΉ ΠΊΠΎΠ΄Π°. ΠΠ·-Π·Π° ΡΡΠΎΠ³ΠΎ, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π΄Π»Ρ ΠΊΠΎΠ΄Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Ρ Π±Ρ ΠΏΠΎΡΠΎΠ²Π΅ΡΠΎΠ²Π°Π» Π½Π΅ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄, Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ Π½Π΅Ρ Π²Π΅ΡΠΊΠΎΠΉ ΠΏΡΠΈΡΠΈΠ½Ρ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π²Π°ΠΌ Π½ΡΠΆΠ½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠΌ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ).
Π― ΡΠ°ΠΊΠΆΠ΅ ΡΠΎΠ±ΠΈΡΠ°ΡΡΡ Π·Π°ΠΊΡΠ΅ΠΏΠΈΡΡ ΡΠ΅ΠΊΡΡΠΈΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΡ Π² Π΄ΠΎΠΌΠ΅Π½Π΅ response-window-v1.now.sh, ΡΡΠΎΠ±Ρ ΠΎΠ½ΠΈ Π½Π΅ Π±ΡΠ»ΠΈ ΠΏΠΎΡΠ΅ΡΡΠ½Ρ ΠΏΡΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ Π΄ΠΎ Π²Π΅ΡΡΠΈΠΈ 2.
onScroll
ΠΠ΄ΠΈΠ½ ΠΈΠ· ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΠΏΠΎΠΌΠΎΡΡ ΡΠΏΡΠ°Π²ΠΈΡΡΡΡ ΡΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡΡ - ΡΠΌΠ΅Π½ΡΡΠΈΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ², ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ . Π Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ Ρ ΠΏΠ»Π°Π½ΠΈΡΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Π² Π²Π΅ΡΡΠΈΠΈ 2 ΡΠΎΠ»ΡΠΊΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠΈΠΏΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ²:
SimpleList
(ΡΠ°Π½Π΅Π΅ FixedSizeList
)List
(ΡΠ°Π½Π΅Π΅ DynamicSizeList
)ResizeObserver
API (ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΠΈΡΠΈΠ»Π»).Grid
(ΡΠ°Π½Π΅Π΅ VariableSizeGrid
)ΠΠ΄Π½ΠΈΠΌ ΠΈΠ· ΠΎΡΠ½ΠΎΠ²Π½ΡΡ
ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Ρ react-virtualized
Π½Π° react-window
Π±ΡΠ»ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ children
ΠΊΠ°ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ React (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, React.createElement(children, props))
), Π° Π½Π΅ ΠΊΠ°ΠΊ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, children(props)
).
ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π±ΡΠ»ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠΎΡΠΈΠ²ΠΎΠ²:
React.memo
, useMemo
, shouldComponentUpdate
), ΠΏΠΎΡΡΠΎΠΌΡ ΠΌΠ½Π΅ Π½Π΅ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²ΡΠ²Π°ΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΡ ΠΊΠ΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π»Ρ ΡΡΠ΅Π΄ΡΡΠ² Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ².react-window
Π½Π΅ ΡΡΠ΅Π±ΡΡ, ΡΡΠΎΠ±Ρ ΡΠ΅ΠΊΠ²ΠΈΠ·ΠΈΡ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π° ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π» ΠΈΡ
(ΠΈ Π±Π΅Π· Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π²ΡΠ·ΠΎΠ²Π° cloneElement
).Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, Π±ΡΠ»ΠΈ ΠΈ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ:
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"
.
ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΡΠ΅ΡΠΊΠΈ Π±ΡΠ΄ΡΡ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ 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
ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½Π°Ρ ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΌ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ²) Π±ΡΠ΄Π΅Ρ ΡΠ΄Π°Π»Π΅Π½Π°, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΌ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π΅ ΠΈ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΡΠΎΠ³ΠΎ Π±ΠΎΠ»Π΅Π΅ Π΄ΠΎΡΠΎΠ³ΠΎΡΡΠΎΡΡΠ΅ΠΉ.ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· Π²ΡΡΠ΅ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΡ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΡ ΡΠ²ΠΎΠΉΡΡΠ² ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π½Π΅Π°ΠΊΡΡΠ°Π»ΡΠ½ΡΠΌΠΈ Ρ ΡΡΠ΅ΡΠΎΠΌ Π΄ΡΡΠ³ΠΈΡ Π·Π°ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, Π½ΠΎ Ρ Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»ΡΡ ΠΈΡ Π·Π΄Π΅ΡΡ Π΄Π»Ρ ΠΏΠΎΠ»Π½ΠΎΡΡ ΠΊΠ°ΡΡΠΈΠ½Ρ.
Π Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ Π½Π° ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΡ ΡΡΡΡΠΎΠΉΡΡΠ²Π°Ρ ΡΠΈΡΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΡΠ½ΡΠ΅ ΡΠΏΠΈΡΠΊΠΈ. ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΈΡ Π΄Π»Ρ Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΉ ΠΏΡΠΎΠΊΡΡΡΠΈΠ²Π°Π΅ΠΌΠΎΠΉ ΠΊΠ°ΡΡΡΠ΅Π»ΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ. Π£ 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?
ΡΠ°ΠΊ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΌΠΎΠΉ ΡΠΏΠΈΡΠΎΠΊ ΡΠΎ ΡΠΏΠΈΡΠΊΠΎΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ°
ΠΡΠΎ Π½Π΅ ΠΎΠ±ΡΠ°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ. ΠΡΡΠ°Π²Π»ΡΠΉΡΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΏΠΎ ΡΠ΅ΠΌΠ΅.
ΠΠ±ΡΠ°ΡΠ½Π°Ρ ΡΠ²ΡΠ·Ρ ΠΏΡΠΈΠ²Π΅ΡΡΡΠ²ΡΠ΅ΡΡΡ
Π― ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ 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}
/>
ΠΠ²ΡΠΌΡ ΠΊΠ»ΡΡΠ΅Π²ΡΠΌΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ, Π·Π°ΡΡΠ°Π²Π»ΡΡΡΠΈΠΌΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π»ΠΈΠΏΠΊΠΎΡΡΡ, ΡΠ²Π»ΡΡΡΡΡ:
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 ,
Π― ΡΠΎΠ·Π΄Π°Π» ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅ Π½Π° ΡΠ²ΠΎΠ΅ΠΉ Π²ΠΈΠ»ΠΊΠ΅ Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠΌΠΈ Π·Π°ΠΌΠ΅ΡΠΊΠ°ΠΌΠΈ.
Π‘ΠΎΠΎΠ±ΡΠΈΡΠ΅ ΠΌΠ½Π΅, Π΅ΡΠ»ΠΈ ΡΡΠΎ-ΡΠΎ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ Π² ΡΠΏΠΈΡΠΊΠ΅ ΠΈΠ»ΠΈ ΡΡΠΎ Π½Π΅Π²Π΅ΡΠ½ΠΎ. Π― Π΄ΠΎΠΏΠΎΠ»Π½Ρ ΡΠΏΠΈΡΠΎΠΊ, ΠΊΠΎΠ³Π΄Π° Π΄ΠΎΠ±ΡΡΡΡ ΠΏΡΠΎΠ³ΡΠ΅ΡΡΠ°.
ΠΠΎΡ ΠΎΠΆΠ΅ Π½Π° Ρ ΠΎΡΠΎΡΠΈΠ΅ Π²Π΅ΡΠΈ
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
Π Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ Π½Π° ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΡ ΡΡΡΡΠΎΠΉΡΡΠ²Π°Ρ ΡΠΈΡΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΡΠ½ΡΠ΅ ΡΠΏΠΈΡΠΊΠΈ. ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΈΡ Π΄Π»Ρ Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΉ ΠΏΡΠΎΠΊΡΡΡΠΈΠ²Π°Π΅ΠΌΠΎΠΉ ΠΊΠ°ΡΡΡΠ΅Π»ΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ. Π£ IMO Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ Π²Π΅ΡΡ Π½Π° ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΠΎΠΌ ΡΠ΅Π»Π΅ΡΠΎΠ½Π΅.