рдпрд╣ react-window
рдХреЗ рдЖрдЧрд╛рдореА рд╕рдВрд╕реНрдХрд░рдг 2.0 рдХреЗ рд▓рд┐рдП рдореЗрд░реА рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЫрд╛рддрд╛ рдореБрджреНрджрд╛ рд╣реИред
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХреА рдЬрд╛рддреА рд╣реИ рдФрд░ рдЗрд╕реЗ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдПрдЧрд╛ред рдореИрдВ рдкреВрдЫрддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рд╕рдордЭ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдореИрдВ рд╕рднреА рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реВрдВред рдореИрдВ рдмрдВрдбрд▓ рдЖрдХрд╛рд░, рд░рдирдЯрд╛рдЗрдо рдкреНрд░рджрд░реНрд╢рди рдФрд░ рд░рдЦрд░рдЦрд╛рд╡ рдЪрд┐рдВрддрд╛рдУрдВ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕реБрд╡рд┐рдзрд╛ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рддреМрд▓рдирд╛ рдХрд░рдиреЗ рдХреА рдкреВрд░реА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред
рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд╕рдВрд╕реНрдХрд░рдг 1 рд╕реЗ 2 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдХреЛрдб рдкрд░рд┐рд╡рд░реНрддрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ , рдЬрд┐рдирдореЗрдВ рд╕реЗ рдХрдИ рдХреЛрдб рдореЙрдб рдХреЗ рд╕рд╛рде рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдЗрд╕рдХреЗ рдХрд╛рд░рдг, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛрдб рдХреЗ рд▓рд┐рдП, рдореИрдВ рдореМрдЬреВрджрд╛ рдХреЛрдб рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рд▓рд╛рд╣ рджреВрдВрдЧрд╛ рдЬрдм рддрдХ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдордЬрдмреВрдд рдХрд╛рд░рдг рди рд╣реЛ (рдЬреИрд╕реЗ рдЖрдкрдХреЛ рдбрд╛рдпрдирд╛рдорд┐рдХ рдЖрдХрд╛рд░ рд╕рд╛рдордЧреНрд░реА рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ)ред
рдореИрдВ рднреА рдЖрдЧреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдБ рдФрд░ рд╡рд░реНрддрдорд╛рди рдбреЙрдХреНрд╕ рдХреЛ рдбреЛрдореЗрди рдкрд░ рдкрд┐рди рдХрд░ рд░рд╣рд╛ рд╣реВрдБ- рд╡рд┐рдВрдбреЛ-v1.now.shред рддрд╛рдХрд┐ рдЬрдм рдореИрдВ рд╕рдВрд╕реНрдХрд░рдг 2 рдХреЗ рд▓рд┐рдП рдЕрджреНрдпрддрди
onScroll
рдХреЙрд▓рдмреИрдХ рд╕рдордп рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрдирдЬрдЯрд┐рд▓рддрд╛ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдкреБрд╕реНрддрдХрд╛рд▓рдп рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рдШрдЯрдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ
SimpleList
(рдкрд╣рд▓реЗ FixedSizeList
)List
(рдкрд╣рд▓реЗ DynamicSizeList
)ResizeObserver
API (рдпрд╛ рдкреЙрд▓реАрдлрд╝рд┐рд▓) рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИредGrid
(рдкрд╣рд▓реЗ VariableSizeGrid
)react-virtualized
рд╕реЗ react-window
рдореЗрдВ рдХрд┐рдП рдЧрдП рдкреНрд░рдореБрдЦ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдореЗрдВ рд╕реЗ react-virtualized
children
рдХреЛ рд░рд┐рдПрдХреНрдЯ рдПрд▓рд┐рдореЗрдВрдЯреНрд╕ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП React.createElement(children, props))
) рдХреЗ рдмрдЬрд╛рдп рдкреНрд░реЙрдкреНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ children(props)
)ред
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдкреНрд░реЗрд░рдгрд╛рдПрдБ рдереАрдВ:
React.memo
, useMemo
, shouldComponentUpdate
) рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдЖрдЗрдЯрдо рд░реЗрдВрдбрд░рд░реНрд╕ рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рдХреИрд╢рд┐рдВрдЧ рдЕрдореВрд░реНрдд рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рдереАредreact-window
рджреНрд╡рд╛рд░рд╛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рдЙрдиреНрд╣реЗрдВ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░реЗрдВрдбрд░ рдкреНрд░реЛрдк рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ (рдФрд░ cloneElement
рдХреЙрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛)редрджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдХреБрдЫ рдбрд╛рдЙрдирд╕рд╛рдЗрдб рднреА рдереЗ:
itemData
рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЙрдкрд░реЛрдХреНрдд рдкреЗрд╢реЗрд╡рд░реЛрдВ рдФрд░ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ 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
рдХреЙрд▓рдмреИрдХ рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рддрд╛рдХрд┐ рдХрд┐рд╕реА рднреА рдЕрдкрдбреЗрдЯ рдХреЛ рд╕реВрдЪреА рдпрд╛ рдЧреНрд░рд┐рдб рдХреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЕрдкрдбреЗрдЯ рдХреЗ рд╕рд╛рде рдмреИрдЪ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
onItemsRendered
рдХреЙрд▓рдмреИрдХ рдХреЛ onItemsDisplayed
рдкреНрд░реЛрдк рдХреЗ рд╕рд╛рде рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ , рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕реЗ рдкреНрд░рддрд┐рдмрджреНрдз рдЪрдХреНрд░ рдХреЗ рджреМрд░рд╛рди рдХрд╣рд╛ рдЬрд╛рддрд╛ рд░рд╣реЗрдЧрд╛ред рдпрд╣ рдкрд░рд┐рд╡рд░реНрддрди рд╕реВрдЪреА рдШрдЯрдХ рдХреЛ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдкрд░ рдкреВрд░реНрд╡-рдкреНрд░рддрд┐рдкрд╛рджрди рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рдЖрдХреНрд░рд╛рдордХ рд░реВрдк рд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдФрд░ рдкреНрд░рджрд░реНрд╢рди рд▓реЙрдХрд┐рдВрдЧ рдЬреИрд╕реЗ рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред
рдХрдИ рд▓рдВрдмрд┐рдд рдЕрд╡рдХреНрд╖реЗрдкрдг (DEV рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде) рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:
innerTagName
рдФрд░ outerTagName
ред (рдЗрд╕рдХреЗ рдмрдЬрд╛рдп innerElementType
рдФрд░ outerElementType
рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред)overscanCount
, overscanColumnsCount
, рдФрд░ overscanRowsCount
ред (рдЗрд╕рдХреЗ рдмрдЬрд╛рдп overscanColumnCount
рдФрд░ overscanRowCount
рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред)overscanCount
рдХреЛ рд╕реВрдЪреА рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛редdirection
рд▓рд┐рдП "рдХреНрд╖реИрддрд┐рдЬ" рдФрд░ "рдКрд░реНрдзреНрд╡рд╛рдзрд░" рдорд╛рдиред (рдЗрдиреНрд╣реЗрдВ layout
рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЗрдиреНрд╣реЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдВрд╕реНрдХрд░рдг 2 рдореЗрдВ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛)itemData
рдкреНрд░реЛрдк (рдФрд░ рдЗрд╕реА data
рдкреНрд░реЛрдк рдЖрдЗрдЯрдо рд░реЗрдВрдбрд░рд░реНрд╕ рдХреЗ рд▓рд┐рдП рдкрд╛рд░рд┐рдд) рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рд░реЗрдВрдбрд░ рдкреНрд░реЛрдк рдПрдкреАрдЖрдИ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдЕрдм рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рдмрдирд╛рддреЗ рд╣реИрдВредuseIsScrolling
рдкреНрд░реЛрдк (рдФрд░ рдЗрд╕реА isScrolling
рдкреНрд░реЛрдк рдХреЛ рдЖрдЗрдЯрдо рд░реЗрдВрдбрд░рд░реНрд╕ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛) рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░реА-рд░реЗрдВрдбрд░рд┐рдВрдЧ рдФрд░ рдбрд┐рд╕реНрдкреНрд▓реЗ рд▓реЙрдХрд┐рдВрдЧ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдЕрдзрд┐рдХ рдорд╣рдВрдЧрд╛ рдмрдирд╛ рджреЗрдЧрд╛редрдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЙрдкрд░реНрдпреБрдХреНрдд рдХреБрдЫ рдкреНрд░реЙрдкреНрд╕ рдЕрднреА рднреА рдЕрдиреНрдп рдирд┐рдпреЛрдЬрд┐рдд рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдЙрдиреНрд╣реЗрдВ рдкреВрд░реНрдгрддрд╛ рдХреЗ рд▓рд┐рдП рд╡реИрд╕реЗ рднреА рдпрд╣рд╛рдВ рд╕реВрдЪреАрдмрджреНрдз рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдореЛрдмрд╛рдЗрд▓ рдкрд░ рдХреНрд╖реИрддрд┐рдЬ рд╕реВрдЪрд┐рдпреЛрдВ рдХрд╛ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдо рдЙрдиреНрд╣реЗрдВ рдирд┐рдпрдВрддреНрд░рдг рдХреА рддрд░рд╣ рдЕрдирдВрдд рд╕реНрдХреНрд░реЙрд▓ рд╣рд┐рдВрдбреЛрд▓рд╛ рдХреЗ рд▓рд┐рдП рднреА рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдореЛрдмрд╛рдЗрд▓ рдкрд░ IMO рдХреА рдмрд╛рдд рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред
рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓рд╛ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж @istarkovред рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдХреНрд╖реИрддрд┐рдЬ рд╡рд┐рдВрдбреЛрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП _any_ рд╡реИрдз рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рд╣реИрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рдмрд╣реБрдд рдХрдо рдЖрдо рд╣реИрдВред (рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╣рд┐рдВрдбреЛрд▓рд╛ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХрдИ рд▓реЛрдЧ рдмрд╛рдПрдВ / рджрд╛рдПрдВ рддреАрд░ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ "рд╕реНрдХреНрд░реЙрд▓" рдЗрд╡реЗрдВрдЯ рдЖрдзрд╛рд░рд┐рдд рд╡рд┐рдВрдбреЛрд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред) рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ v2 рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЫреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЕрднреА рднреА рдмреЗрд╣рддрд░ рдорд╛рд░реНрдЧ (рдореЗрд░реЗ рд▓рд┐рдП) рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдореИрдВ рдкрд╣рд▓реЗ рд╕реЗ рд░реЗрдВрдбрд░рд┐рдВрдЧ, рдбрд╛рдпрдирд╛рдорд┐рдХ рд╕рд╛рдЗрдЬрд╝рд┐рдВрдЧ рдЖрджрд┐ рдХреЗ рд╕рд╛рде рд╢реБрд░реБрдЖрдд рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдБред
рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕ рджреБрдмрд▓реЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд▓рд┐рдП рдЙрддреНрд╕рд╛рд╣рд┐рдд рд╣реВрдВ рдЬреЛ рдЙрдореНрдореАрдж рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╕рд░рд▓, рдЕрдзрд┐рдХ рдкреНрд░рджрд░реНрд╢рди рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдФрд░ рд╕рд░рд▓ рдХреЛрдб рд╣реЛрдЧрд╛ред
рдорд╣рд╛рдиред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЪрд░ рдЖрдХрд╛рд░ рд╕реВрдЪреА рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдЪрд┐рдВрддрд╛рдПрдВ рд╣реИрдВред рдЖрдк рдбрд╛рдпрдирд╛рдорд┐рдХрд▓рд┐рд╕реНрдЯ рдХреЗ рд╕рд╛рде рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ рдЖрдХрд╛рд░ рдХреА рд╕реВрдЪреА рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдбрд╛рдпрдиреЗрдорд┐рдХ рд╕реВрдЪреА рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдЬрд┐рд╕реЗ рдЖрдк рдЖрдЗрдЯрдо рдкрд░ рд╕реНрдХреНрд░реЙрд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдХреБрдЫ рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╕реБрд╡рд┐рдзрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ рдФрд░ рдРрд╕реА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕рдордп рдХреЗ рд╕рд╛рде рдЖ рд╕рдХрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдк рдЕрдиреБрдорд╛рди рдирд╣реАрдВ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдЦрд┐рдбрд╝рдХреА рдЖрдкрдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рддреА рд╣реИред
рджреВрд╕рд░рд╛ рдореБрджреНрджрд╛ рдЬреЛ рдореИрдВ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ рд╡рд╣ рд╣реИ рдбрд╛рдпрдиреЗрдорд┐рдХ рд╕реВрдЪреА рдкреНрд░рджрд░реНрд╢рди, рдЕрдЧрд░ рдЖрдк рдбрд╛рдпрдирд╛рдорд┐рдХ рд╕реВрдЪреА рдХреЗ рд▓рд┐рдП рд╡реИрд╕рд╛ рд╣реА рдкреНрд░рджрд░реНрд╢рди рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреИрд╕рд╛ рдХрд┐ рдЪрд░ рдЖрдХрд╛рд░ рд╕реВрдЪреА рдХреЗ рд▓рд┐рдП рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдЫреЛрдбрд╝рдирд╛ рдареАрдХ рд╣реЛрдЧрд╛ рднрд▓реЗ рд╣реА рдЖрдк рд╕реНрдХреНрд░реЙрд▓рдЯрд╛рдЗрдЯрдо рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рд▓реЙрдХ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЕрдЬреАрдм рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рдЬрд╣рд╛рдВ рдбрд╛рдпрдирд╛рдорд┐рдХ рд╕реВрдЪреА рдзреАрдореА рд╣реИ рдФрд░ рдЖрдЗрдЯрдо рд╕рдорд░реНрдерди рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕реНрдХреНрд░реЙрд▓ рдирд╣реАрдВ рд╣реИ, рд╕реВрдЪреА рдореЗрдВ рдХреЗрд╡рд▓ рдирд┐рд╢реНрдЪрд┐рдд рдЖрдЗрдЯрдо рдКрдВрдЪрд╛рдИ рд╣реИред
рдЖрдк рдбрд╛рдпрдирд╛рдорд┐рдХрд▓рд┐рд╕реНрдЯ рдХреЗ рд╕рд╛рде рдЪрд░ рдЖрдХрд╛рд░ рд╕реВрдЪреА рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдбрд╛рдпрдирд╛рдорд┐рдХ рд╕реВрдЪреА рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдЬрд┐рд╕реЗ рдЖрдк рдЖрдЗрдЯрдо рдкрд░ рд╕реНрдХреНрд░реЙрд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдПрдХ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╕реАрдорд╛ рд╣реИ, рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рдореЗрд░реЗ рдкрд╛рд╕ рд╡рд┐рдЪрд╛рд░ рд╣реИрдВ рдХрд┐ рдореИрдВ рдЙрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреИрд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рдХреНрдпрд╛ рдореБрдЭреЗ рдЗрд╕рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХрд╛ рд╕рдордп рдорд┐рд▓реЗрдЧрд╛
рджреВрд╕рд░рд╛ рдореБрджреНрджрд╛ рдЬреЛ рдореИрдВ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ рд╡рд╣ рд╣реИ рдбрд╛рдпрдиреЗрдорд┐рдХ рд╕реВрдЪреА рдкреНрд░рджрд░реНрд╢рди, рдЕрдЧрд░ рдЖрдк рдбрд╛рдпрдирд╛рдорд┐рдХ рд╕реВрдЪреА рдХреЗ рд▓рд┐рдП рд╡реИрд╕рд╛ рд╣реА рдкреНрд░рджрд░реНрд╢рди рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреИрд╕рд╛ рдХрд┐ рдЪрд░ рдЖрдХрд╛рд░ рд╕реВрдЪреА рдХреЗ рд▓рд┐рдП рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдЫреЛрдбрд╝рдирд╛ рдареАрдХ рд╣реЛрдЧрд╛ рднрд▓реЗ рд╣реА рдЖрдк рд╕реНрдХреНрд░реЙрд▓рдЯрд╛рдЗрдЯрдо рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рд▓реЙрдХ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЕрдЬреАрдм рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рдЬрд╣рд╛рдВ рдбрд╛рдпрдирд╛рдорд┐рдХ рд╕реВрдЪреА рдзреАрдореА рд╣реИ рдФрд░ рдЖрдЗрдЯрдо рд╕рдорд░реНрдерди рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕реНрдХреНрд░реЙрд▓ рдирд╣реАрдВ рд╣реИ, рд╕реВрдЪреА рдореЗрдВ рдХреЗрд╡рд▓ рдирд┐рд╢реНрдЪрд┐рдд рдЖрдЗрдЯрдо рдКрдВрдЪрд╛рдИ рд╣реИред
рдХрд╣рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдЕрдЪреНрдЫрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд░реЗрдЧрд╛ред рдЧрддрд┐рд╢реАрд▓ рд╕реВрдЪреА рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ рдФрд░ рдЕрдзрд┐рдХ рдХрд╛рдо рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рддрд╛рдХрд┐ рдпрд╣ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдкреНрд░рджрд░реНрд╢рди рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рд╢рд╛рдпрдж рдЕрдВрддрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реЛрдЧрд╛, рд╢рд╛рдпрдж рдирд╣реАрдВред рдореИрдВ рдХреБрдЫ рдРрд╕реА рдЪреАрдЬреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬреЛ рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реВрдВ, рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдирдИ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЧреБрдВрдЬрд╛рдЗрд╢ рдХрд╛рдЯрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред рдпрджрд┐ рдЖрдк рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ рд╕реВрдЪреА рд╕реЗ рдЦреБрд╢ рд╣реИрдВ, рддреЛ v2 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реИ (рдХрдо рд╕реЗ рдХрдо рдХрд┐рд╕реА рднреА рд╕рдордп)ред
@bvaughn рдпрд╣ рдореБрдЭреЗ рджрд╕реНрддрд╛рд╡реЗрдЬ рдХреА рддрд░рд╣ рд▓рдЧ рд░рд╣рд╛ рд╣реИ!
рдХреНрдпрд╛ рдЖрдк рдкрд┐рдЫрд▓реА рдЧрд░реНрдорд┐рдпреЛрдВ рд╕реЗ рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ? ;-)
рдПрдХ рдФрд░ рдЕрдзрд┐рдХ рдЧрдВрднреАрд░ рдиреЛрдЯ рдкрд░ - рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд░реЗрдВрдбрд░ рдкреНрд░реЙрдкреНрд╕ рдЗрд╕ рд╕рдВрджрд░реНрдн рдореЗрдВ рдорд╛рдпрдиреЗ рд░рдЦрддреЗ рд╣реИрдВ, рднрд▓реЗ рд╣реА рдореИрдВ рдкреНрд░рд╢рдВрд╕рдХ рдирд╣реАрдВ рд╣реВрдВред
рдирд╣реАрдВ, рдореИрдВрдиреЗ рдЖрдЬ рд╕реБрдмрд╣ рд▓рд┐рдЦрд╛ рдерд╛ exhaust рдореИрдВ рдердХ рдЧрдпрд╛ рд╣реВрдВред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд░реЗрдВрдбрд░ рдкреНрд░реЙрдкреНрд╕ рдЗрд╕ рд╕рдВрджрд░реНрдн рдореЗрдВ рдорд╛рдпрдиреЗ рд░рдЦрддреЗ рд╣реИрдВ, рднрд▓реЗ рд╣реА рдореИрдВ рдкреНрд░рд╢рдВрд╕рдХ рдирд╣реАрдВ рд╣реВрдВред
рдХреНрдпрд╛ рдЖрдк рд╡рд┐рд╕реНрддреГрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рдкреНрд░рд╢рдВрд╕рдХ рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИрдВ?
рдХреНрдпрд╛ рдХреНрд╖реИрддрд┐рдЬ рд╕реВрдЪреА / рдЧреНрд░рд┐рдб рд╕рдорд░реНрдерди AutoSizer
(рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рд╡рд░реНрдЪреБрдЕрд▓рд╛рдЗрдЬреНрдб-рдСрдЯреЛ-рд╕рд┐рдЬрд╝рд░) рдЬреИрд╕реА рд╕реБрд╡рд┐рдзрд╛ рдореЗрдВ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ?
рдореИрдВрдиреЗ рдХреНрд╖реИрддрд┐рдЬ рд╕реВрдЪрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рд╡рд░реНрдЪреБрдЕрд▓рд╛рдЗрдЬреНрдб рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рд╡рд┐рдВрдбреЛ рджреЛрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ, рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рд╡рд┐рдВрдбреЛ рдПрдкреАрдЖрдИ рдХреЛ рдмрд╣реБрдд рд╕рд░рд▓ рдкрд╛рдпрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рд░рд▓ рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП рдЖрд╢рд╛рдУрдВ рдореЗрдВ рд╡рдВрдЪрд┐рдд рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдЧреНрд░рд┐рдб рд╕рдорд░реНрдерди рдЕрднреА рднреА рдпреЛрдЬрдирд╛рдмрджреНрдз рд╣реИред рдХреНрд╖реИрддрд┐рдЬ рд╕рдорд░реНрдерди рдореЗрдВ рдСрдкреНрдЯ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд╣реАрдВред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЗрд╕рд╕реЗ рдХреЛрдИ рдорддрд▓рдм рд╣реЛрдЧрд╛ред
@bvaughn рдореИрдВ рдЖрдо рддреМрд░ рдкрд░ рд░реЗрдВрдбрд░ рдкреНрд░реЙрдкреНрд╕ рдХрд╛ рдЖрдирдВрдж
рдХреНрдпрд╛ рдЖрдк рдЪрд┐рдирд╛рдИ рдЧреНрд░рд┐рдб рдХрд╛ рдПрд╣рд╕рд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?
@nikitapilgrim рдирд╣реАрдВред рдореИрдВ рдХреЗрд╡рд▓ Masonry
react-virtualized
рд╕реЗ рджреВрдВрдЧрд╛
https://github.com/bvaughn/react-virtualized/blob/master/docs/Masryryd.d
рдзрдиреНрдпрд╡рд╛рдж, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рд╡рд░реНрдЪреБрдЕрд▓рд╛рдЗрдЬреНрдб рдХреЗ рд╕рд╛рде рдЗрд╕рдХрд╛ рдХрд╛рдо?
@ рдорд┐рдиреАрддрдкрд┐рд▓рдЧреНрд░реАрдо рдпрдк ред ЁЯСН
рд░рд┐рдПрдХреНрдЯ-рд╡рд░реНрдЪреБрдЕрд▓рд╛рдЗрдЬреНрдб рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рд╡рд┐рдВрдбреЛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдкреИрдХреЗрдЬ рдХреЛ рдЫреЛрдЯрд╛ рдФрд░ рддреЗрдЬ рдмрдирд╛рдиреЗ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдЦрд┐рдбрд╝рдХреА рдХрд╛ рджрд╛рдпрд░рд╛ рдмрд╣реБрдд рдХрдо рд╣реЛ рдЧрдпрд╛ рд╣реИред ЁЯШЙ
рдпрджрд┐ рдЖрдкрдХреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рд╡рд░реНрдЪреБрдЕрд▓рд╛рдЗрдЬреНрдб рд╕реЗ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕рдХреЗ рд╕рд╛рде рд░рд╣реЗрдВ - рдпрд╣ рдЕрднреА рднреА рдПрдХ рдорд╣рд╛рди рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИ!
рдореИрдВрдиреЗ react-window
рдкрд░ рдареЛрдХрд░ рдЦрд╛рдИ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЗрд╕ react-virtualized
babel 7
рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╣рд▓ рдвреВрдВрдв рд░рд╣рд╛ рдерд╛ред рдореИрдВ react-virtualized
Masonry
рдШрдЯрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди babel
рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЕрдм рдФрд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред
рдпрд╣ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рд╡рд░реНрдЪреБрдЕрд▓рд╛рдЗрдЬреНрдб рдХреЗ рд╕рд╛рде рдореБрджреНрджреЛрдВ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдХреА рдЬрдЧрд╣ рдирд╣реАрдВ рд╣реИред
рд╕рд╣рдордд @bvaughnред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЕрдкрдиреЗ рдЖрдк рдХреЛ рдФрд░ @babangsund рдКрдкрд░ рд╣реИ рдХрд┐ рдПрдХ @nikitapilgrim рдХрд╛ рдЬрд╡рд╛рдм рджрд┐рдпрд╛ Masonry
рдШрдЯрдХ рдореЗрдВ рдкреЗрд╢ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ react-window
рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдмрджрд▓реЗ react-virtualized
ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрджрд┐ рдХреЛрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╡реАрдирддрдо [email protected]
рдФрд░ [email protected]
(рдЬреИрд╕реЗ create-react-app
) рдХреЗ рд╕рд╛рде рд╣реИ, рддреЛ react-virtualized
рдЖрд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдФрд░ рдЦрд░рдЧреЛрд╢ рдХреЗ рдЫреЗрдж рдХреЗ рдиреАрдЪреЗ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рдЬрд╛рдирдХрд╛рд░реА рд╣реИред
┬п \ _ (уГД) _ / уГД
рд╣реЗ рдореИрдВ рдЧрддрд┐рд╢реАрд▓ рдЖрдХрд╛рд░ рд╕реВрдЪреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдЬрд╣рд╛рдВ рдореИрдВ рд╕рдВрд╕реНрдХрд░рдг 2 рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдпрд╛ рдореБрдЭреЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛?
рдпрд╣ рд╣реИ рдХрд┐ рдореЗрд░реА рд╕реВрдЪреА рдЪрд░ рдЖрдХрд╛рд░ рд╕реВрдЪреА рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рджрд┐рдЦ рд░рд╣реА рд╣реИ
рдпрд╣ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╕рдорд░реНрдерди рдореБрджреНрджрд╛ рдирд╣реАрдВ рд╣реИред рдХреГрдкрдпрд╛ рд╡рд┐рд╖рдп рдкрд░ рдЯрд┐рдкреНрдкрдгреА рд░рдЦреЗрдВред
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХреА рд╣реИ
рдореИрдВ рдЯреНрд░реЗрд▓реЛ рдЬреИрд╕реЗ рдЙрддреНрдкрд╛рдж рдкрд░ react-window
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдпрд╣рд╛рдВ рдХреБрдЫ рд╡рд┐рдЪрд╛рд░ рджрд┐рдП рдЧрдП рд╣реИрдВ:
рд░реЗрдВрдбрд░ рдкреНрд░реЙрдкреНрд╕
рдпрд╣ рд╕рд╛рджрдЧреА рдХреЗ рдХрд╛рд░рдг рдПрдХ рдЕрдЪреНрдЫрд╛ рдмрджрд▓рд╛рд╡ рдФрд░ рдЙрд▓реНрд▓реЗрдЦрд┐рдд рдирдХрд╛рд░рд╛рддреНрдордХрддрд╛ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд▓рдЧрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдкреАрдЖрдИ, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓ рдХреЗ рдлреНрд▓реИрдЯрд▓рд┐рд╕реНрдЯ рдХреЗ рд╕рдорд╛рди рд╣реЛрдЧрд╛ред рдореБрдЭреЗ https://github.com/bvaughn/react-window/issues/85 рдкрд░ рдЪрд░реНрдЪрд╛ рдкрдврд╝рдирд╛ рдпрд╛рдж рд╣реИ
рдХрдо рдШрдЯрдХ
рдХреЛрдИ рдФрд░ рдЕрдзрд┐рдХ рдХреНрд╖реИрддрд┐рдЬ рд╕реВрдЪреА рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ
рдореИрдВ horizontal
рд╕рдорд░реНрдерди рдФрд░ VariableSizeList
рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рдЦрд┐рд▓рд╛рдл рдЕрддреНрдпрдзрд┐рдХ рд╡реЛрдЯ рдХрд░рддрд╛ рд╣реВрдВред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдХрд▓реНрдкрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпреЗ рдореБрдЦреНрдп рджреЛ рд╣реИрдВ рдЬреЛ рдореИрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рдХреНрдпрд╛ рдЙрдирдХрд╛ рдХреНрд░рд┐рдпрд╛рдиреНрд╡рдпрди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдзрд┐рдХ рдмреЛрдЭ рд╣реИ? рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдк рдкреБрдирд░реНрд╡рд┐рдЪрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВред
рдореЗрд░реЗ рдкрд╛рд╕ рдЕрдиреНрдп рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХреЛрдИ рдордЬрдмреВрдд рд░рд╛рдп рдирд╣реАрдВ рд╣реИред overscanCount
рдХреЛ рд╣рдЯрд╛рдиреЗ рд╕реЗ рдореБрдЭреЗ рдереЛрдбрд╝реА рдЪрд┐рдВрддрд╛ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдЕрднреА рддрдХ рдХрд╕реНрдЯрдо рдореВрд▓реНрдп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╢рд╛рдпрдж рдареАрдХ рд╣реИред
рдЕрд░реЗ @bvaughn! рдЗрд╕ рдкреИрдХреЗрдЬ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж! рдореИрдВ рдХрд╛рдо рдкрд░ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рд╕рдВрд╕реНрдХрд░рдг 2 рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рдЪрд╛рд╣ рд░рд╣рд╛ рд╣реВрдВред рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдмреЙрд▓рдкрд╛рд░реНрдХ рд╣реИ рдЬрдм рдпрд╣ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ?
рдЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдФрд░ рднрд╡рд┐рд╖реНрдп рдХреА рд░рд┐рд▓реАрдЬрд╝ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рдпреЛрдЬрдирд╛ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рддрдХрдиреАрдХреА рдЛрдг рдХреЛ рдХрдо рдХрд░рдиреЗ рдореЗрдВ рд╣рдорд╛рд░реА рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реИред
рдХреНрдпрд╛ рд╣рд╛рд▓ рдХреЗ react-window
рдФрд░ рдмрд╛рдж рдореЗрдВ рд╕рдВрд╕реНрдХрд░рдг 2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ WindowScroller
рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рдиреЗ рдХрд╛ рдПрдХ "рд╕рд░рд▓" рддрд░реАрдХрд╛ рд╣реИ?
рдпрджрд┐ рдпрд╣ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ рддреЛ рдпрд╣ рдЗрд╕ рд╕рдВрд╕реНрдХрд░рдг 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
рдЬреИрд╕реЗ рдПрдХ рдЕрд▓рдЧ рдкреИрдХреЗрдЬ рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рд╣реИрдВред
рдЕрдЧреНрд░рд┐рдо рдореЗрдВ рдзрдиреНрдпрд╡рд╛рджред
@ рдкреНрд░рднрд╛рд╕рдорд╡реЗрд▓ рд╣реНрдо редред
рдПрдХ рдЕрд▓рдЧ рдкреИрдХреЗрдЬ рдХрд╛ рдХреНрдпрд╛ рдлрд╛рдпрджрд╛ рд╣реИ?
рдирдП рдбрд╛рдпрдиреЗрдорд┐рдХрд╕рд╛рдЗрдЬрд╝рд▓рд┐рд╕реНрдЯ рдХреЗ рд╕рд╛рде рдЦреЗрд▓ рд░рд╣рд╛ рд╣реИред рдмрд╣реБрдд рд╣реА рд╢рд╛рдВрдд! рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ 'рдЯреАрдЯреАрдмреА' рдФрд░ 'рдмреАрдЯреАрдЯреА' (рдЯреЙрдк-рдЯреВ-рдмреЙрдЯрдо, рдмреЙрдЯрдо-рдЯреВ-рдЯреЙрдк) рдХреЛ рдбрд╛рдпрд░реЗрдХреНрд╢рди рдЯрд╛рдЗрдк рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдЪреНрдЫреА рдПрдиреНрд╣рд╛рдВрд╕рдореЗрдВрдЯ рд╣реЛрдЧреАред рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╕реВрдЪреА рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рд╕рд╛рдл рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдКрдкрд░ рдХреА рдУрд░ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рд░ рджреВрд╕рд░реА рджрд┐рд╢рд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
@toddmacintyre рдореИрдВ рдпрд╣ рд╕рдВрд╕реНрдХрд░рдг 2 рдирд╣реАрдВ рдкрд╛ рд╕рдХрддрд╛ рд╣реВрдВред рдХреНрдпрд╛ рдХреЛрдИ рдореБрдЭреЗ рдорд╛рд░реНрдЧрджрд░реНрд╢рди рджреЗ рд╕рдХрддрд╛ рд╣реИ?
@ рдордореБрд╣рдореНрдореЗрджрдЧрджреА npm install react-window@next
рдпрд╣ рд╢рд╛рдирджрд╛рд░ рд╣реЛрдЧрд╛ рдпрджрд┐ рд╕рдВрд╕реНрдХрд░рдг 2 рдпрд╣рд╛рдВ рдпреБрдХреНрддрд┐ рджреНрд╡рд╛рд░рд╛ рдЖрд╡рд╢реНрдпрдХ рдбреЛрдо рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░ рд╕рдХрддрд╛ рд╣реИ - 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
рдЧреНрд░рд┐рдб рдореЗрдВ рднреА рдЧреБрдЬрд░ рд░рд╣рд╛ рд╣реИ - рдЬрдмрдХрд┐ рдпрд╣ ?:
рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рдЪрд░ рдЪреМрдбрд╝рд╛рдИ рд╡рд╛рд▓реЗ рдХреЙрд▓рдо рд╣реЗрдбрд░ рдХреЗ рд╕рд╛рде рдЧреНрд░рд┐рдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд╣рдордиреЗ рдПрдХ рдХреНрд╖реИрддрд┐рдЬ рдЪрд░ рдЖрдХрд╛рд░ рд╕реВрдЪреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдЧреНрд░рд┐рдб рдХреЗ рд╕рд╛рде рдпреБрдЧреНрдорд┐рдд рдФрд░ рджреЛ рдХреА рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧ рдХреЛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░рдХреЗ рд╣рд╛рд╕рд┐рд▓ рдХрд┐рдпрд╛ рд╣реИред
рдХреНрд╖реИрддрд┐рдЬ рд╕реВрдЪрд┐рдпреЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рд╕реЗ рд╣рдо рдЙрд╕ UI рдХреЛ рдмрдирд╛рдиреЗ рд╕реЗ рд░реЛрдХреЗрдВрдЧреЗ (рдпрд╛ рдХрдо рд╕реЗ рдХрдо рд╣рдореЗрдВ рдЗрд╕реЗ 2 рдЧреНрд░рд┐рдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ рдЬрд╣рд╛рдВ рдХреЙрд▓рдо рд╣реЗрдбрд░ рдЧреНрд░рд┐рдб рдореЗрдВ рдПрдХ рдкрдВрдХреНрддрд┐ рд╣реИред
рдЕрдЧрд▓рд╛ рдЙрддреНрдкрд╛рдж рдЕрджреНрднреБрдд рд▓рдЧ рд░рд╣рд╛ рд╣реИред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдХреНрд╖реИрддрд┐рдЬ рдФрд░ рдКрд░реНрдзреНрд╡рд╛рдзрд░ рджреЛрдиреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП FYI рдХрд░реЗрдВ рдореИрдВрдиреЗ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдмрдирд╛рдпрд╛: https://www.npmjs.com/package/react-infinite-grid-scrollerред рдЧреНрд░рд┐рдб рд▓реЗрдЖрдЙрдЯ, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╣реБрдХ, IntersectionObserver, рдФрд░ requestIdleCallback рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рдХрд░рддреЗ рд╣реИрдВред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЪрд┐рдкрдЪрд┐рдкрд╛ рддрддреНрд╡реЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдЦрд┐рдбрд╝рдХреА рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдврд╝рд┐рдпрд╛ рдЕрддрд┐рд░рд┐рдХреНрдд рд╣реЛрдЧрд╛ред рдпрд╣ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд╛рдорд╛рдиреНрдп рдЙрдкрдпреЛрдЧ рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИ рдФрд░ рд╕реВрдЪреА рдФрд░ рдЧреНрд░рд┐рдб рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реАрдзреЗ рдЖрдЧреЗ рд╣реЛрдЧрд╛ред
рдПрдкреАрдЖрдИ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ:
<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 рдбрд╛рдпрдиреЗрдорд┐рдХ рдЪреМрдбрд╝рд╛рдИ рдХреЙрд▓рдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬреЛ рдмрд╛рдХреА рд╕реНрдкреЗрд╕ рдХреЛ рд▓реЗрддрд╛ рд╣реИред
рдореИрдВ рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ "рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ" рдЬрд░реВрд░реА рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдЕрддрд┐рд░рд┐рдХреНрдд рдХреЛрдб рдФрд░ рдШрдЯрдХреЛрдВ рдЬреИрд╕реЗ рдСрдЯреЛрд╕рд╛рдЗрдЬрд╝рд░ рдХреЗ рд╕рд╛рде рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛрдЧрд╛ - рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЙрди рдорд╛рдорд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдорд╛рдирд╛ рдЬрд╛рдП рдФрд░ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рдзрд╛рди рдЬреЛ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рджрд╕реНрддрд╛рд╡реЗрдЬ рд╣реИрдВ рдЬрд┐рдирдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдбрд╛рдпрдиреЗрдорд┐рдХ рдХреЙрд▓рдо рд▓реЗрдХрд┐рди рдЕрдкрдиреЗ рд╕рд╛рде рд▓рд╛рдП рдЧрдП рд╕рднреА рд╕рд╛рдорд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рд░рд┐рдПрдХреНрдЯ-рд╡рд░реНрдЪреБрдЕрд▓рд╛рдЗрдЬреНрдб рдирд╣реАрдВ рдЬрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ред
рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЙрди рдорд╛рдорд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╕рдорд╛рдзрд╛рди рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рд▓реЗрдЦрд┐рдд рд╣реЛрддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдПрдХ рдЧрддрд┐рд╢реАрд▓ рд╕реНрддрдВрдн рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ
рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдордЭрд╛ рдЬрд╛рддрд╛ рд╣реИ- рд▓реЗрдХрд┐рди рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдХрд╣рд╛ рдЬрд╛рдП рддреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рдиреАрдЪреЗ scoped v2 рдкреНрд░рдпрд╛рд╕реЛрдВ рдЦрддреНрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрдХреЗрд▓реЗ рдХреБрдЫ рднреА рдФрд░ рдЕрдзрд┐рдХ рдЖрдХреНрд░рд╛рдордХ рдЬрд╛рдиреЗ рд╕рдордп рдирд╣реАрдВ рдерд╛ред ЁЯШЮ
рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЙрди рдорд╛рдорд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╕рдорд╛рдзрд╛рди рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рд▓реЗрдЦрд┐рдд рд╣реЛрддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдПрдХ рдЧрддрд┐рд╢реАрд▓ рд╕реНрддрдВрдн рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ
рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдордЭрд╛ рдЬрд╛рддрд╛ рд╣реИ- рд▓реЗрдХрд┐рди рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдХрд╣рд╛ рдЬрд╛рдП рддреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА
рд╣рд╛рдВред рдореИрдВ рд╕рдордЭ рдЧрдпрд╛ред рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдкреНрд░рдпрд╛рд╕реЛрдВ рдХрд╛ рдиреЗрддреГрддреНрд╡ рд╕рдореБрджрд╛рдп рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛- рд▓реЗрдХрд┐рди рдореЗрд░реЗ рдЕрдиреБрднрд╡ рдореЗрдВ, рдРрд╕рд╛ рдХрднреА рдирд╣реАрдВ рд╣реЛрддрд╛: рдореБрд╕реНрдХрд╛рди:
рдореИрдВ рдбрд╛рдпрдиреЗрдорд┐рдХрд▓рд╛рдЗрдЬрд╝реНрдбрд▓рд┐рд╕реНрдЯ рдХреЗ рд╕рд╛рде WindowScroller
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде рд░рд╣рд╛ рд╣реВрдВ, рд╢рд╛рдпрдж рдЗрд╕реАрд▓рд┐рдП рдХрд┐ рд╕рдордп-рд╕рдордп рдкрд░ рд░реЗрдВрдбрд░ рдХрд░рдиреЗ рд╕реЗ рд╕реНрдХреНрд░реЙрд▓рдЯреЗрд▓ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдХреНрдпрд╛ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдпрд╣ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛?
рдореИрдВрдиреЗ рдЗрд╕ рддрдереНрдп рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдкреНрд░рдпрд╛рд╕ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд░реЗ рдкрд╛рд╕ рд╕рдордп рдпрд╛ рдКрд░реНрдЬрд╛ рдирд╣реАрдВ рд╣реИред рдЕрдЧрд░ рдХреЛрдИ рднреА рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рд╢реБрд░реВ рдХреА рдЧрдИ рд╢рд╛рдЦрд╛ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдирд╛ рдФрд░ рд╕рдорд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдЧрд╛, рддреЛ рдореИрдВ рдЖрдкрдХреА рдорджрдж рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рдХрд░рддрд╛ рд╣реВрдБред (рдХреГрдкрдпрд╛ List
рдФрд░ Grid
рдкрд░ рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ # 6 рднреА рджреЗрдЦреЗрдВ, рд╕рдордп-рд╕рдордп рдкрд░ рдорд╛рдк рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред)
рд╣рд╛рдп @ рдмреАрд╡реЙрди ,
рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдХрд╛рдВрдЯреЗ рдкрд░ рдХреБрдЫ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдиреЛрдЯреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЪрд░реНрдЪрд╛ рдмрдирд╛рдИ рд╣реИред
рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдХреНрдпрд╛ рдРрд╕рд╛ рдХреБрдЫ рд╣реИ рдЬреЛ рд╕реВрдЪреА рдореЗрдВ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ рдЬреЛ рд╕рд╣реА рдирд╣реАрдВ рд╣реИред рдЬрдм рдореИрдВ рдкреНрд░рдЧрддрд┐ рдХрд░реВрдВрдЧрд╛ рддреЛ рд╕реВрдЪреА рдкреВрд░реА рдХрд░реВрдВрдЧрд╛ред
рдЕрдЪреНрдЫреА рдЪреАрдЬ рд▓рдЧрддреА рд╣реИ
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдореЛрдмрд╛рдЗрд▓ рдкрд░ рдХреНрд╖реИрддрд┐рдЬ рд╕реВрдЪрд┐рдпреЛрдВ рдХрд╛ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдо рдЙрдиреНрд╣реЗрдВ рдирд┐рдпрдВрддреНрд░рдг рдХреА рддрд░рд╣ рдЕрдирдВрдд рд╕реНрдХреНрд░реЙрд▓ рд╣рд┐рдВрдбреЛрд▓рд╛ рдХреЗ рд▓рд┐рдП рднреА рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдореЛрдмрд╛рдЗрд▓ рдкрд░ IMO рдХреА рдмрд╛рдд рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред