@oliviertassinari ΠΠ΅ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ Π²Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ Π² ΡΠ΅Π»ΠΎ Π΄Π»Ρ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΏΡΠΈ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π΅ Π΄Π»ΠΈΠ½Π½ΡΡ
ΡΠΏΠΈΡΠΊΠΎΠ² Π±Π΅Π· ΡΠ°Π·Π±ΠΈΠ²ΠΊΠΈ Π½Π° ΡΡΡΠ°Π½ΠΈΡΡ?
Π― Π½Π°Π½Π΅ΡΡ ΡΠ΄Π°Ρ, Π΅ΡΠ»ΠΈ Π²Ρ ΠΏΡΠΎΡΡΠΎ ΡΠΊΠ°ΠΆΠ΅ΡΠ΅ ΠΌΠ½Π΅ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ΅ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ( react-virtualized
?)
ΠΡ Π½Π°Π΄Π΅Π΅ΠΌΡΡ, ΡΡΠΎ ΡΠ΅ΠΊΡΡΠΈΠΉ API Π΄ΠΎΠΏΡΡΠΊΠ°Π΅Ρ ΠΏΡΠΎΡΡΡΡ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ react-virtualized
. ΠΡ ΠΎΡΠΊΡΡΡΡ Π΄Π»Ρ Π²Π½Π΅ΡΠ΅Π½ΠΈΡ Π»ΡΠ±ΡΡ
ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ, ΡΡΠΎΠ±Ρ ΡΠΏΡΠΎΡΡΠΈΡΡ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ.
ΠΡΠ»ΠΎ Π±Ρ Π·Π΄ΠΎΡΠΎΠ²ΠΎ ΠΈΠΌΠ΅ΡΡ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ.
ΠΡΠ»ΠΈ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΌΠΎΡΡ, Π²ΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ ΡΠΎ ΡΠΏΠΈΡΠΊΠΎΠΌ / ΠΌΠ΅Π½Ρ https://codesandbox.io/s/oQ0nkl5pk.
@oliviertassinari Π― ΡΠ΄Π΅Π»Π°Π» ΡΡΠΎ Π±Π΅Π· react-virtualized
ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΡΠΎ Π±ΡΠ» Π±Π΅ΡΠΏΠΎΡΡΠ΄ΠΎΠΊ, ΠΈ ΠΎΠ½ ΠΏΠ»ΠΎΡ
ΠΎ ΡΠ°Π±ΠΎΡΠ°Π» Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌΠΈ mui.
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΌΠΎΠ΅ ΡΠ΅ΠΊΡΡΠ΅Π΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΡΠ΅Π»ΠΎ css ΠΈ ΠΏΡΠΎΠΊΡΡΡΠΈΠ²Π°Π΅ΠΌΠΎΠ΅ ΡΠ΅Π»ΠΎ Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ Π²ΡΡΠΎΡΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΡ ΠΈ ΡΠΈΡΠΈΠ½ΠΎΠΉ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΡ
ΡΡΠΎΠ»Π±ΡΠΎΠ² (ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΎ Π² Safari).
ΠΡΠ΅Π³Π΄Π° Π½Π°Π²Π΅ΡΡ
Ρ ΠΏΠ°Π½Π΅Π»Ρ Ρ ΠΏΡΠΎΠΊΡΡΡΠΈΠ²Π°Π΅ΠΌΡΠΌ ΡΠ΅Π»ΠΎΠΌ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠ° Π΄Π»Ρ Π³ΡΠΈΠ΄ΠΎΠ² Π΄Π°Π½Π½ΡΡ
.
Π― Π΄ΠΎΠ±Π°Π²Π»ΡΡ ΠΏΡΠΎΡΠΈΠ²ΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΏΡΠΎΠΊΡΡΡΠΊΠ΅, Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΈ ΠΈΡΠΏΡΠ°Π²Π»ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ±ΠΎΠΈ, Π½ΠΎ ΠΎΠ½ ΠΎΡΠ»ΠΈΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ: Ρ "Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎ" ΡΠ΅Π½Π΄Π΅ΡΠΈΠ» ΠΎΠΊΠΎΠ»ΠΎ ~ 2400 ΡΡΡΠΎΠΊ, ΠΎΠΎΠΎΡΠ΅Π½Ρ ΠΏΠ»Π°Π²Π½ΠΎ.
ΠΠΎΠΏΡΠΎΡΡ ΠΏΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌ Table
:
ref
Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌΠΈ MUI? Π― Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΡΠΈΡΠ»ΡΡ TableThead
height: ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π² ΡΠΎΠΌ, ΡΡΠΎ<TableHead ref={ ref => this.tableThead = ref }>
Π½Π΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° DOM TableThead
Π° ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ React (ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ React ΠΏΡΠΈ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ref
ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π½Π΅-DOM), ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΡΠΎ ΡΠΎ, ΡΡΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ Π² TableThead
ΡΠ°ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ; ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡΡ Π΄ΡΡΠ³ΠΈΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌ, ΡΠ°ΠΊ ΠΏΠΎΡΠ΅ΠΌΡ Π±Ρ Π½Π΅ ΠΈΠΌΠ΅ΡΡ refHandler
Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ΅ MUI, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅Ρ Π΄Π°Π½Π½ΡΠΉ ΠΎΠ±ΡΠ°ΡΠ½ΡΠΉ Π²ΡΠ·ΠΎΠ² Π² ΠΏΠ΅ΡΠ²ΠΎΠΌ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ΅? (ΠΠ°Π΄Π΅ΡΡΡ, ΠΌΠ½Π΅ ΡΠ΄Π°Π»ΠΎΡΡ ΡΡΠΎ ΠΎΠ±ΡΡΡΠ½ΠΈΡΡ @ _ @)
ΠΠΎΠ΅ ΡΠ΅ΠΊΡΡΠ΅Π΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΡΡΠ°Π½Π½ΠΎΠ΅
const theadHeight = ReactDOM.findDOMNode(this.tableThead).clientHeight; // eslint-disable-line react/no-find-dom-node
ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΡΠ°ΡΠ΅Π²ΡΠ΅Π³ΠΎ findDomNode
ΠΈ ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ eslint.
ΠΏΠΎΡΠ΅ΠΌΡ border-bottom
ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΊ ΡΡΠ΅ΠΉΠΊΠ°ΠΌ Π²ΠΌΠ΅ΡΡΠΎ ΡΡΡΠΎΠΊ?
ΠΊΠ°ΠΊ Π½Π°ΡΡΠ΅Ρ Π½Π°Π»ΠΈΡΠΈΡ stripe={true}
prop Π΄Π»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΡΡΠΎΠΊ TableBody
?
ΠΏΠΎΡΠ΅ΠΌΡ .MuiIconButton.root
ΠΈΠΌΠ΅Π΅Ρ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ ΡΡΠΈΠ»Ρ zIndex? π€
Π― Π½Π°Π΄Π΅ΡΡΡ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°ΡΡ ΡΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΠ΅ ΠΏΠΎ ΡΡΠΎΠΌΡ ΠΏΠΎΠ²ΠΎΠ΄Ρ Π² Π±Π»ΠΈΠΆΠ°ΠΉΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ, ΡΡΠΎΠ±Ρ Π²Ρ ΠΌΠΎΠ³Π»ΠΈ ΡΠ²ΠΈΠ΄Π΅ΡΡ, ΡΡΠΎ ΡΡΠΎ ΡΠΎ, ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠ½ΡΡΡ Π² ΡΠ΅Π»ΠΎΠΌ.
ΠΠ·Π²ΠΈΠ½ΠΈΡΠ΅, ΡΡΠΎ ΡΠ°ΠΊ Π±Π΅ΡΠΏΠΎΠΊΠΎΡΡΡ, Π½ΠΎ Ρ Π°ΠΊΡΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ mui @ next, ΠΏΠΎΡΡΠΎΠΌΡ Π½Π°Ρ ΠΎΠΆΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ!
Π― ΡΠ΄Π΅Π»Π°Π» ΡΡΠΎ Π±Π΅Π· ΡΠ΅Π°ΠΊΡΠΈΠΈ-Π²ΠΈΡΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΡΠΎ Π±ΡΠ» Π±Π΅ΡΠΏΠΎΡΡΠ΄ΠΎΠΊ, ΠΈ ΠΎΠ½ Π½Π΅ ΠΎΡΠ΅Π½Ρ Ρ ΠΎΡΠΎΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π» Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌΠΈ mui.
ΠΠΉ, ΠΊΠ°ΠΊ Π½Π°ΠΌ ΠΆΠ°Π»Ρ. ΠΡΡΡ ΠΈΠ΄Π΅ΠΈ, ΡΡΠΎ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΄Π΅Π»Π°ΡΡ, ΡΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΌ?
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ innerRef
ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΡΡΠ»ΠΊΡ Π½Π° TableHead
. ref
Π΄Π°ΡΡ Π²Π°ΠΌ ΡΡΡΠ»ΠΊΡ Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ withStyles(TableHead)
. ΠΡΠ»ΠΈ ΡΡΠΎ Π½Π΅ ΡΡΠ°Π±ΠΎΡΠ°Π΅Ρ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ rootRef
. ΠΡΠΎ ΡΠ°Π±Π»ΠΎΠ½, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ ΡΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ.
ΠΠ΅Π· ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠΈ
~~ΠΠΉ, ΠΊΠ°ΠΊ Π½Π°ΠΌ ΠΆΠ°Π»Ρ.
ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΡΡΠΎ ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΠ΅ react-virtualized
ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ
ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ², ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ
ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² table/thead/tbody
DOM ΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π½Π°Π»ΠΈΡΠΈΡ ΠΏΡΠΎΠΊΡΡΡΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ tbody
ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²ΡΠ·Π²Π°Π»ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.
Π‘ ΡΡΠΈΠΌ ΡΡΠ΅Π±ΠΎΠ²Π°Π»ΠΎΡΡ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°Π±ΠΎΡΡ: ΠΏΡΠΎΡΡΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ MuiTable
Π±ΡΠ»ΠΎ ΠΏΡΠΎΡΠ΅ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ.
Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΡ rootRef
Π±ΡΠ»Π° Π±Ρ Π·Π°ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠΉ (ΠΏΡΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠΈ, ΡΡΠΎ TableThead
main ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π² ΠΌΠ΅ΡΠΎΠ΄Π΅ render
ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΠΌΠΈΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ Thead
DOM)
ΡΠ»Π΅Π΄ΡΠ΅Ρ Π»ΠΈ ΡΠΎΠ³Π΄Π° border-bottom
ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΡΡ Π² tr
? ΠΠΎΠ»ΠΆΠ΅Π½ Π»ΠΈ Ρ Π²ΡΠ½Π΅ΡΡΠΈ ΡΡΠΎ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ Π²ΡΠΏΡΡΠΊ?
Π― ΠΈΠΌΠ΅Ρ Π² Π²ΠΈΠ΄Ρ ΠΏΠΎΠ»ΠΎΡΠ°ΡΡΠ΅ ΡΡΡΠΎΠΊΠΈ: Π»Π΅Π³ΠΊΠΎ Π΄ΠΎΠ±ΠΈΡΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ like tr:nth-child(odd) { backgroundColor: f2f2f2
Π½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Ρ Π½Π°Ρ ΡΠΆΠ΅ Π΅ΡΡΡ ΡΠ΄ΠΎΠ±Π½Π°Ρ ΡΠ°ΡΠΊΡΠ°ΡΠΊΠ° hover={true}
ΠΏΠΎΡΠ΅ΠΌΡ Π±Ρ Π½Π΅ ΠΈΠΌΠ΅ΡΡ ΡΠ΄ΠΎΠ±Π½ΡΡ striped={true}
? :)
ΠΎΡΠ»ΠΈΡΠ½ΡΠΉ!
TableCell
.ref={rootRef}
.<FormControl ref={rootRef} ...>
ΡΠ½ΠΎΠ²Π° Π²Π΅ΡΠ½Π΅Ρ ΡΡΡΠ»ΠΊΡ Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ React (ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ FormControl
Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ DOM) ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ±Ρ
ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠ½Π΅ ΠΏΡΠΈΡΠ»ΠΎΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ.rootRef
Π²Π΅ΡΡΠΈ ΡΠ΅Π±Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:Π―Π²Π»ΡΠ΅ΡΡΡ Π»ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ DOM?
ref={rootRef}
rootRef={rootRef}
=> ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΡΡΡΡ Π΄ΠΎ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° DOM: ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΊΠΎΠ΄Π΅Ρ Π²ΡΠ΅Π³Π΄Π° Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠ΅ΡΡ ΡΠ΅Π°Π»ΡΠ½ΡΡ ΡΡΡΠ»ΠΊΡ Π½Π° DOMΠ£Π½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, ΠΎ ΠΊΠΎΡΠΎΡΠΎΠΌ Ρ ΠΌΠΎΠ³Ρ Π΄ΡΠΌΠ°ΡΡ, - ΡΡΠΎ ΡΠ²ΠΎΠΉΡΡΠ²Π° muiRef
ΠΈ rootRef
Π³Π΄Π΅ ΠΏΠ΅ΡΠ²ΡΠΉ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅Ρ ΠΎΠ±ΡΠ°ΡΠ½ΡΠΉ Π²ΡΠ·ΠΎΠ² ΠΊ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ "ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° mui" (Π΅ΡΠ»ΠΈ Π΅ΡΡΡ), Π° Π²ΡΠΎΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅Ρ ΠΎΠ±ΡΠ°ΡΠ½ΡΠΉ Π²ΡΠ·ΠΎΠ², ΠΊΠ°ΠΊ Ρ ΡΠΊΠ°Π·Π°Π» ΡΠ°Π½ΡΡΠ΅.
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ Π»Π΅Π³ΠΊΠΎ ΠΈΠΌΠ΅ΡΡ ΠΊΠ°ΠΊ MUI ref, ΡΠ°ΠΊ ΠΈ DOM ref (Π²ΡΠ΅, ΡΡΠΎ Π΅ΠΌΡ Π½ΡΠΆΠ½ΠΎ, ΠΊΠΎΠ³Π΄Π° Π΅ΠΌΡ Π½ΡΠΆΠ½ΠΎ).
ΠΠ°ΠΊ Π²Ρ Π΄ΡΠΌΠ°Π΅ΡΠ΅, Π² ΡΡΠΎΠΌ Π΅ΡΡΡ ΡΠΌΡΡΠ»?
Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ? @ _ @
ΠΎΠΏΡ! Π― Π²ΡΠ΅Π³Π΄Π° Π·Π°Π±ΡΠ²Π°Ρ ΠΎ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠ°Ρ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π°
ref
ΠΈ rootRef
ref
ΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ Π΅Π³ΠΎ ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡrootRef
ΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅Ρ Π΅Π³ΠΎ ΠΊΠ°ΠΊ ΡΡΡΠ»ΠΊΡ ΠΊ ΠΊΠΎΡΠ½Π΅Π²ΠΎΠΌΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Cref
ΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΠ΅ Π΅Π³ΠΎ ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡΠΠΎ ΡΡΠΎ, Π΅ΡΠ»ΠΈ ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ C ΡΠ°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ rootRef?
ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ A ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π° Π·Π΅ΠΌΠ»Π΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ B ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ TextField, Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ C ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ FormControl.
ΠΡΠ°ΠΊ, ΠΌΠΎΠΉ ΠΎΡΠ²Π΅Ρ: ΡΠ½Π°ΡΠ°Π»Π° ΠΌΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠ»ΠΈ rootRef
ΠΊΠ°ΠΊ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΠΎΠΌΠΎΡΠ½ΠΈΠΊ. ΠΡ Π½Π΅ Π΄ΡΠΌΠ°Π»ΠΈ ΠΎΠ± ΠΈΠ½Π΄ΡΡΡΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ. ΠΡΠ°ΠΊ, Ρ Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ΡΠ΅ΠΊΡΡΠ΅Π΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π²Π΅Π»ΠΈΠΊΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π΄Π΅ΡΠ΅ΡΠΌΠΈΠ½ΠΈΡΠΎΠ²Π°Π½ΠΎ, ΠΏΡΠΎΡΡΠΎ ΠΈ Π±Π΅Π· ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΡΠ΅, Π΅ΡΠ»ΠΈ Π»ΡΠ΄ΠΈ Π·Π°ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠΎΠ²Π°Π½Ρ Π² Π΄ΠΎΡΡΡΠΏΠ΅ ΠΊ Π±Π°Π·ΠΎΠ²ΠΎΠΌΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ dom, ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ API findDOMNode .
@damianobarbati ΠΡΠ» ΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°ΡΡ-Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎ-Π»ΠΈΡΡ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ° Ρ ΡΠ°Π±Π»ΠΈΡΠ΅ΠΉ ΠΈ Π²ΠΈΡΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠΏΠΎΠΌΠΈΠ½Π°Π΅ΡΡΡ Π·Π΄Π΅ΡΡ ?
Π― ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ listComponent = TableBody, itemComponent = TableRow?
Π― Π½Π°ΡΠ°Π» ΡΡΠΎΡ ΠΏΡΠΎΠ΅ΠΊΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π²ΠΈΡΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠ΅Π°ΠΊΡΠΈΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π° 1.0, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ Π²Π°Ρ Π·Π°ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠΎΠ²Π°ΡΡ.
https://github.com/techniq/mui-table
Π Π°Π±ΠΎΡΠ° Π½Π°Π΄ Π½ΠΈΠΌ Π²ΡΠ΅ Π΅ΡΠ΅ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΡΡΡ (ΡΠΌ. Https://github.com/techniq/mui-table/blob/master/TODO.md), Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π²Π°ΠΌ ΠΏΠΎΠ»Π΅Π·Π½Π°. ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠ² Π½Π΅ Ρ Π²Π°ΡΠ°Π΅Ρ, Π½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ ΠΈΡΡΠΎΡΠΈΠΈ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ½ΡΡΡ, ΠΊΠ°ΠΊ ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ.
@techniq ΠΡΠ³Π»ΡΠ΄ΠΈΡ ΠΌΠ½ΠΎΠ³ΠΎΠΎΠ±Π΅ΡΠ°ΡΡΠ΅ π! Π― Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ Π±ΡΠ»ΠΎ Π±Ρ Π·Π΄ΠΎΡΠΎΠ²ΠΎ Π² ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΏΠ΅ΡΠ΅Π΄Π΅Π»Π°ΡΡ ΡΠ°Π·Π΄Π΅Π» Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΏΠΎ ΡΠ°Π±Π»ΠΈΡΠ°ΠΌ :
- https://github.com/DevExpress/devextreme-reactive~~ (ΠΊΠΎΠΌΠΌΠ΅ΡΡΠ΅ΡΠΊΠ°Ρ Π»ΠΈΡΠ΅Π½Π·ΠΈΡ)
ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π΅Π³ΠΎ Π² ΡΠ°Π·Π΄Π΅Π» https://material-ui-next.com/discover-more/related-projects/#material-ui-specific-projects.
ΠΡΠ°ΠΊ, Π΄Π°ΠΉΡΠ΅ Π½Π°ΠΌ Π·Π½Π°ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΎΠ΅ΠΊΡ ΡΡΠ°Π½Π΅Ρ Π±ΠΎΠ»Π΅Π΅ Π·ΡΠ΅Π»ΡΠΌ. ΠΡΠΌΠ°Ρ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΈΠ½ΡΡΡ ΠΏΡΠ»ΡΠ΅ΠΊΠ²Π΅ΡΡ Π΄Π»Ρ ΠΏΡΠΎΠ΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° :).
Π― ΡΠ΄Π΅Π»Π°Π» PR Π΄Π»Ρ react-virtual-list
Π·Π΄Π΅ΡΡ https://github.com/clauderic/react-tiny-virtual-list/pull/30, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Ρ material-ui. Π― ΠΈΠ·ΠΎ Π²ΡΠ΅Ρ
ΡΠΈΠ» ΠΏΡΡΠ°Π»ΡΡ Π·Π°ΡΡΠ°Π²ΠΈΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ response-virtual ΠΈ ΡΠΎΠ·Π΄Π°ΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ HTML, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ ΠΈΠΌΠ΅Π΅Ρ ΠΆΠ΅ΡΡΠΊΠΎ Π·Π°ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ div
.
ΠΠΎΠΏΠΈΡ: @kgregory
@eyn ΠΎΡΠ»ΠΈΡΠ½Π°Ρ ΡΠ°Π±ΠΎΡΠ°! Π― ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ Π·Π°ΠΊΠΎΠ½ΡΠΈΠ» ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠ°Π±Π»ΠΈΡΡ Ρ Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΉ ΠΏΡΠΎΠΊΡΡΡΠΊΠΎΠΉ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ react-virtualized ΠΈ material-ui. Π― Π½Π°Π΄Π΅ΡΡΡ ΡΠΊΠΎΡΠΎ ΠΈΠ·Π»ΠΎΠΆΠΈΡΡ ΡΡΡΡ. ΠΠΎΠ³Π΄Π° Ρ ΡΡΠΎ ΡΠ΄Π΅Π»Π°Ρ, Ρ ΡΠ²ΡΠΆΡ Π΅Π³ΠΎ Π·Π΄Π΅ΡΡ Π΄Π»Ρ Π²ΡΠ΅Ρ Π±ΡΠ΄ΡΡΠΈΡ ΠΏΠΎΡΠ΅ΡΠΈΡΠ΅Π»Π΅ΠΉ ΡΡΠΎΠ³ΠΎ Π²ΡΠΏΡΡΠΊΠ° ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠΈΠΌΠ΅ΡΠ° Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ.
@kgregory Π²Ρ Π·Π°ΠΊΠΎΠ½ΡΠΈΠ»ΠΈ ΡΠ²ΠΎΡ ΡΡΡΡ? Π― Π²ΡΠ΅ Π΅ΡΠ΅ ΠΈΡΡ Π±Π°Π·ΠΎΠ²ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ Π²ΠΈΡΡΡΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΡ UI ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΎΠ², ΠΈ Π΅Π³ΠΎ Π½Π΅Π»Π΅Π³ΠΊΠΎ Π½Π°ΠΉΡΠΈ ... ΠΡΠΎ Π±ΡΠ»ΠΎ Π±Ρ ΠΎΡΠ»ΠΈΡΠ½ΡΠΌ ΠΏΠΎΠ΄ΡΠΏΠΎΡΡΠ΅ΠΌ!
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° Π²Π°ΡΡ ΡΠ°Π±ΠΎΡΡ!
@neofox ΠΠ΅Ρ, ΠΈΠ·Π²ΠΈΠ½ΠΈΡΠ΅. Π― ΡΠ°ΠΊ ΠΈ Π½Π΅ Π΄ΠΎΠ΄ΡΠΌΠ°Π»ΡΡ Π΄ΠΎ ΡΡΠΎΠ³ΠΎ, Π½ΠΎ Π²Π°Ρ ΠΎΡΠ²Π΅Ρ - Ρ ΠΎΡΠΎΡΠ΅Π΅ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅. Π― ΠΏΠΎΡΡΠ°ΡΠ°ΡΡΡ Π½Π°ΠΉΡΠΈ Π²ΡΠ΅ΠΌΡ, ΡΡΠΎΠ±Ρ ΡΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ ΡΠΎΠ±ΡΠ°ΡΡ.
@oliviertassinari Π²Π°Ρ ΠΏΡΠΈΠΌΠ΅Ρ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· ΠΏΠ΅ΡΠ²ΡΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π², ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΊΠΎΠ±Ρ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΏΠΈΡΠΎΠΊ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΎΠ² Ρ ΡΠ΅Π°Π³ΠΈΡΡΡΡΠΈΠΌ Π²ΠΈΡΡΡΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ ΡΠΏΠΈΡΠΊΠΎΠΌ, Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ. Π£ Π²Π°Ρ Π΅ΡΠ΅ Π΅ΡΡΡ ΡΡΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ?
@rolandjitsu ΠΠ·Π²ΠΈΠ½ΠΈΡΠ΅, Ρ ΠΌΠ΅Π½Ρ Π½Π΅Ρ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ². ΠΠΎΡ Π² ΡΠ΅ΠΌ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° :).
@oliviertassinari ΠΏΠΎΠ½ΡΠ». Π― Π΄ΡΠΌΠ°Π», ΡΡΠΎ ΡΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΠ²ΡΠ·Π°Π½Π° Ρ ΡΠ°Π±Π»ΠΈΡΠ΅ΠΉ, Π° Π½Π΅ Ρ <List>
, ΠΈΠ»ΠΈ ΠΎΠ½Π° ΡΠ°ΠΊΠΆΠ΅ ΠΊΠ°ΡΠ°Π΅ΡΡΡ ΡΠΏΠΈΡΠΊΠΎΠ²?
@rolandjitsu Π‘ΠΏΠΈΡΠΎΠΊ, ΡΠ°Π±Π»ΠΈΡΠ°, Π±ΡΠΌΠ°Π³Π°, ΡΠ΅ΡΠΊΠ°. ΠΡΠ΅ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅. ΠΡΠΎΡ Π²ΠΎΠΏΡΠΎΡ ΠΊΠ°ΡΠ°Π΅ΡΡΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΠΏΡΠΎΡΡΠΎΠΉ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΠΈ, ΡΡΠΎΠ±Ρ Π»ΡΠ΄ΠΈ ΠΌΠΎΠ³Π»ΠΈ Π²ΠΈΠ΄Π΅ΡΡ ΡΠ°Π±Π»ΠΎΠ½ ΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ Π΅Π³ΠΎ ΠΊ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌ. Π’Π°Π±Π»ΠΈΡΠ° - ΡΡΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π²Π°ΠΌ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ Π²ΠΈΡΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ.
@oliviertassinari Π― Ρ ΠΎΡΠ΅Π» Π±Ρ Π΄Π°ΡΡ ΡΡΠ΅ΡΠΈΠ½Ρ, Π΅ΡΠ»ΠΈ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΊΠ°Π·Π°ΡΡ ΠΌΠ½Π΅ Π² ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΌ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΈ. ΠΠ°ΡΠΊΠΎΠ»ΡΠΊΠΎ Ρ ΠΌΠΎΠ³Ρ ΡΡΠ΄ΠΈΡΡ, Π½Π°ΠΌ Π½ΡΠΆΠ½Π° ΠΎΡΠ½ΠΎΠ²Π½Π°Ρ ΡΡΡΡ Ρ material-ui @ next, ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ Ρ react-virtualized?
@ hassan-zaheer ΠΠ°, Ρ Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ΠΏΡΠΎΡΡΠ°Ρ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΡ Ρ react-virtualized Π² ΠΊΠΎΠ½ΡΠ΅ ΡΡΡΠ°Π½ΠΈΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Ρ ΡΠ°Π±Π»ΠΈΡΠ°ΠΌΠΈ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ :).
ΠΡΠΈΠ²Π΅Ρ. Π― ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎ Π½Π°ΡΠΊΠ½ΡΠ»ΡΡ Π½Π° ΡΡΡ Π²Π΅ΡΠΊΡ ΠΏΡΠΈ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°. Π― Ρ ΠΎΡΠ΅Π» Π±Ρ Π·Π½Π°ΡΡ, Π΅ΡΡΡ Π»ΠΈ Π·Π΄Π΅ΡΡ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ, ΠΊΠ°ΡΠ°ΡΡΠΈΠ΅ΡΡ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΠΈΠ»ΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΏΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ? @kgregory ΠΠ»ΠΈ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π°ΡΡ ΠΊΠ°ΠΊΠΎΠ΅-Π½ΠΈΠ±ΡΠ΄Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΠ± ΠΈΡ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΈ? ΠΡΠ»ΠΎ Π±Ρ Π½Π΅ΠΏΠ»ΠΎΡ ΠΎ, ΡΡΠΎΠ±Ρ ΡΡΠΎΠ» Π²ΡΠ³Π»ΡΠ΄Π΅Π» Π³Π°ΡΠΌΠΎΠ½ΠΈΡΠ½ΠΎ ΠΈ ΡΡΠΈΠ»ΡΠ½ΠΎ
@ zd-project ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²Π·Π³Π»ΡΠ½ΡΡΡ Π½Π° ΠΌΠΎΠΉ ΠΏΡΠΎΠ΅ΠΊΡ mui-virtualized-table .
Π Π°Π½ΡΡΠ΅ ΡΡΠΎ Π±ΡΠ»Π° ΡΠ°Π±Π»ΠΈΡΠ° mui, Π½ΠΎ Ρ ΡΠ΅ΡΠΈΠ» ΡΠ°Π·Π΄Π΅Π»ΠΈΡΡ Π΄Π²Π΅ ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠ°ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ( mui-table
Π½Π°ΠΏΡΡΠΌΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ DOM ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΠΊΠΈΠ΅ Π²Π΅ΡΠΈ, ΠΊΠ°ΠΊ position: sticky
ΠΈ <table>
layout (ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Ρ ΡΡΡΠΎΠΊ / ΡΡΠΎΠ»Π±ΡΠΎΠ², Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΠΈΡΠΈΠ½Π° ΠΈ Ρ. Π΄.), ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ»ΠΈ Π·Π°ΡΡΡΠ΄Π½Π΅Π½Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π²ΠΈΡΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ΅Π°ΠΊΡΠΈΠΈ.
Π‘ ΡΡΠ΅ΡΠΎΠΌ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ, mui-virtualized-table
ΠΏΡΠΎΡΡΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΠ» ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΡΡΠΎΠ»Π±ΡΠ° ΠΈΠ· ΠΏΡΠΈΡΡΠ½ΠΎΠ³ΠΎ PR.
ΠΠ΄Π΅ ΠΌΡ Π½Π° ΡΡΠΎΠΌ, ΡΠ΅Π±ΡΡΠ°?
@techniq , ΡΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° mui-virtualized-table
! ΠΠ΄ΠΎΡΠΎΠ²ΠΎ! ΠΡΡΡ Π»ΠΈ ΡΠ°Π½Ρ, ΡΡΠΎ ΠΌΡ ΡΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡΡ Π΅Π³ΠΎ Π² mui-org/material-ui
?
Π― Π±ΡΠ» Π±Ρ ΡΡΠ°ΡΡΠ»ΠΈΠ², Π΅ΡΠ»ΠΈ Π±Ρ ΠΊΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ ΠΎΡΠΊΡΡΠ» PR, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡ Π΄Π΅ΠΌΠΎ-Π²Π΅ΡΡΠΈΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΌΡ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, ΠΌΠΎΠΆΠ΅ΠΌ Π»ΠΈ ΠΌΡ ΡΠ»ΡΡΡΠΈΡΡ API ΡΠ°Π±Π»ΠΈΡ Π΄Π»Ρ Π»ΡΡΡΠ΅ΠΉ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ ΡΠΎ ΡΡΡΠ°ΡΠ΅Π³ΠΈΡΠΌΠΈ Π²ΠΈΡΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ.
@mastertinner ΠΠ°ΡΠ΅ΠΌ Π½ΡΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΡΡΠΎ Π² ΡΠ΄ΡΠΎ? ΠΠΈΡΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ - ΡΡΠΎ ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ. ΠΠ΅ Π²ΡΠ΅ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·ΠΈΡΡΡΡ Π±ΠΎΠ»ΡΡΠΈΠ΅ Π½Π°Π±ΠΎΡΡ Π΄Π°Π½Π½ΡΡ , ΠΏΠΎΡΡΠΎΠΌΡ Ρ Π±Ρ Π½Π΅ ΡΡΠ°Π» ΠΎΠ±ΡΠ΅ΠΌΠ΅Π½ΡΡΡ ΠΈΠΌΠΈ Π²ΡΠ΅Ρ .
@mastertinner ΠΡ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ Π½Π°ΡΠ°ΡΡ ΡΠΎ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π·Π΄Π΅ΡΡ: https://material-ui.com/demos/tables/#advanced-use-cases :)
π Π·Π²ΡΡΠΈΡ ΠΊΠ°ΠΊ ΠΏΠ»Π°Π½
@mastertinner Π₯ΠΎΡΡ Ρ Π²ΡΠ΅ Π΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π΅Π³ΠΎ (ΠΊΠΎΠ³Π΄Π° ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π²ΠΈΡΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ), Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠ²ΠΎΡ Π½ΠΎΠ²ΡΡ ΡΠ°Π±Π»ΠΈΡΡ mui, ΠΊΠΎΠ³Π΄Π° ΠΌΠ½Π΅ Π½Π΅ Π½ΡΠΆΠ½Π° Π²ΠΈΡΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ, ΠΈ ΠΌΠΎΠ³Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ dom (ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ table
, tr
, td
ΠΈΠ»ΠΈ CSS-ΡΠ΅ΡΠΊΠ° Π΄Π»Ρ ΠΌΠ°ΠΊΠ΅ΡΠ°, ΡΡΡΡΠ°Π½ΡΡ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ Π² ΡΠ²Π½ΠΎΠΉ ΡΠΈΡΠΈΠ½Π΅ ΡΡΠΎΠ»Π±ΡΠΎΠ² ΠΈ Ρ.Π΄.) ΠΈ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΡΠ΅ ΡΠ°Π±Π»ΠΎΠ½Ρ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² position: sticky
(Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΎ )
@rogerstorm ΠΏΡΠΎΡΠΈΠ½Π°Π½ΡΠΈΡΠΎΠ²Π°Π» ΡΡΠΎΡ Π²ΡΠΏΡΡΠΊ 30 Π΄ΠΎΠ»Π»Π°ΡΠ°ΠΌΠΈ. Π‘ΠΌΠΎΡΡΠΈΡΠ΅ Π½Π° IssueHunt
Π Π΅ΡΠΈΠ» ΡΠ΅Π³ΠΎΠ΄Π½Ρ ΠΏΠΎΠΈΠ³ΡΠ°ΡΡΡΡ Ρ ΡΡΠΈΠΌ, Π½Π΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡ π ΠΠΎΡ ΡΡΠΎ Ρ ΠΏΡΠΎΠ΄ΡΡΠΈΡΠΎΠ²Π°Π» Π΄ΠΎ ΡΠΈΡ
ΠΏΠΎΡ:
ΠΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, ΠΈΠ·Π²ΠΈΠ½ΠΈΡΠ΅ Π·Π° Π·Π°Π΄Π΅ΡΠΆΠΊΡ, ΠΌΠΎΠΉ Π½ΠΎΡΡΠ±ΡΠΊ Π½Π΅ ΠΎΡΠ΅Π½Ρ Ρ
ΠΎΡΠΎΡ π ΠΠ½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Material-UI ΠΈ react-virtualized
ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ
@joshwooding Π― ΡΠ΄Π΅Π»Π°Π» ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅, ΡΡΠΎ ΠΈ Π²Ρ, Π²ΠΈΡΡΡΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ + ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ (Ρ ΠΏΠΎΠ»ΠΎΡΠΎΠΉ ΠΏΡΠΎΠΊΡΡΡΠΊΠΈ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° ΡΠ΅Π»Π΅) . ΠΡΠ»ΠΈ Π²Π°ΡΠ° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π΄Π²Π° ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ
<Table>
s, ΡΠΎ Ρ Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ Ρ Π²Π°Ρ ΡΠ΅ ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΡΡΠΎ ΠΈ Ρ.
numeric
) Π½Π΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΠΊΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ, ΠΊΠ°ΠΊ <div>
Π΄Π»Ρ ΠΌΠ°ΠΊΠ΅ΡΠ° Π²Π½ΡΡΡΠΈ <TableCell>
.td
ΠΈ tr
Π΄Π»Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΉ Π²ΠΈΡΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ. ΠΠ΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄Π°ΡΡ height
ΠΈΠ»ΠΈ max-height
td
ΠΈ tr
Π° <TableCell>
ΠΈΠΌΠ΅Π΅Ρ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, ΠΌΠ°ΡΠΆΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΠ½ Π΄Π΅Π»Π°Π΅Ρ ΡΡΡΠ΄Π½ΠΎ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ Π²ΡΡΠΎΡΡ ΡΡΡΠΎΠΊΠΈ.Π§ΡΠΎ ΠΆ, Π΄Π΅Π»ΠΎ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π²Π½ΡΡΡΠΈ <TableCell>
Π½Π΅ΠΈΠ·Π±Π΅ΠΆΠ΅Π½. ΠΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ, ΡΠ΅ΡΠΈΠ»ΠΈ Π»ΠΈ Π²Ρ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΡΠ»Π΅Π³Π°Π½ΡΠ½ΠΎ? Π ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Ρ Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ Π²ΠΈΡΡΡΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ + ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ (Ρ ΠΏΠΎΠ»ΠΎΡΠΎΠΉ ΠΏΡΠΎΠΊΡΡΡΠΊΠΈ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° ΡΠ΅Π»Π΅) ΡΡΡΠ΄Π½ΠΎ Π±ΡΡΡ ΠΌΠ°Π»Π΅Π½ΡΠΊΠΈΠΌ (ΡΠ°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΌΠ°Π»Π΅Π½ΡΠΊΠΈΠΌ, ΠΊΠ°ΠΊ Π΅Π³ΠΎ ΡΡΠ½ΠΊΡΠΈΡ), ΡΠ΅ΡΠΊΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠΌ.
@worudso Π Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ <Table>
ΠΠ½Π΅ Π½ΡΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ ΡΠΏΠΎΡΠΎΠ± ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΡΠΈΡΠ»ΠΎ Π²Π½ΠΈΠ·, Π½ΠΎ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ρ ΡΠΌΠΎΠ³Ρ Π·Π°ΡΡΠ°Π²ΠΈΡΡ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ. ΠΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎ Π½Π΅ ΠΌΠ°Π»Π΅Π½ΡΠΊΠΈΠΉ ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ, ΠΈ ΠΌΠΎΠΉ ΠΊΠΎΠ΄ Π²ΡΠ΅ Π΅ΡΠ΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°Π·Π±ΡΠΎΡΠ°Π½, Π½ΠΎ Ρ ΡΠΎΠ±ΠΈΡΠ°ΡΡΡ ΠΏΠΎΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π°Π΄ Π½ΠΈΠΌ Π΅ΡΠ΅ ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ, ΡΠΌΠΎΠ³Ρ Π»ΠΈ Ρ Π΅Π³ΠΎ ΡΠ»ΡΡΡΠΈΡΡ.
Π― ΡΠΎΠ·Π΄Π°Π» ΠΏΠ΅ΡΠΎΡΠ½ΠΈΡΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ material-ui ΠΈ react-virtualized Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π²ΠΈΡΡΡΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΡ. Π ΡΡΠΎΠΌ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ react-virtualized Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΡΠ°Π±Π»ΠΈΡΡ ΠΏΠΎ Π²ΡΡΠΎΡΠ΅ ΠΎΠΊΠ½Π°.
ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ MuiVirtualizedTable
ΠΈΠ· ΠΏΡΠΈΠΌΠ΅ΡΠ° ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π² ΡΡΠΎΠΉ ΡΡΡΠ½ΠΎΡΡΠΈ .
MuiVirtualizedTable
ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π»ΡΠ±ΡΡ ΠΎΠΏΠΎΡΡ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΡ ΡΠ°Π±Π»ΠΈΡΠ΅ΠΉ . rowClassName
Π½Π΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π½Π°ΠΏΡΡΠΌΡΡ, Π° Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π² Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ Π΄ΡΡΠ³ΠΈΠΌ ΡΡΠΈΠ»ΡΠΌ, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌ Π² MuiVirtualizedTable
.
ΠΠΏΡΠΈΡ columns
ΠΎΠΆΠΈΠ΄Π°Π΅Ρ ΠΌΠ°ΡΡΠΈΠ² ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΡΠΈ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π΅ ΡΡΠ΅Π΅ΠΊ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΡΠΎΠ»Π±ΡΠ°. ΠΠ°ΠΆΠ΄ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π»ΡΠ±ΡΡ ΠΎΠΏΠΎΡΡ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΡ Column .
ΠΠΎΠΈ ΠΈΠ·Π²ΠΈΠ½Π΅Π½ΠΈΡ Π·Π° ΡΠΎ, ΡΡΠΎ ΡΠ°ΠΊ Π΄ΠΎΠ»Π³ΠΎ. Π― Π±ΡΠ» Π·Π°Π½ΡΡ.
Π Π²Π°ΡΠ΅ΠΌΡ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ, ΡΠ΅ΠΏΠ΅ΡΡ Π΅ΡΡΡ ΡΠ°ΠΊΠΆΠ΅ react-window
ΠΊΠΎΡΠΎΡΡΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΏΡΠ΅Π΅ΠΌΠ½ΠΈΠΊΠΎΠΌ react-virtualized
. ΠΠ° ΡΠ»ΡΡΠ°ΠΉ, Π΅ΡΠ»ΠΈ ΠΊΡΠΎ-ΡΠΎ Π·Π°Ρ
ΠΎΡΠ΅Ρ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ ΡΡΠΎ.
@kgregory Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ, ΡΡΠΎ ΠΏΠΎΠ΄Π΅Π»ΠΈΠ»ΠΈΡΡ codeandbox.
@joshwooding ΠΡΠ»ΠΈΡΠ½Π°Ρ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΡ. Π₯ΠΎΡΠΎΡΠΎ ΠΈΠΌΠ΅ΡΡ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ :). ΠΠ°Π΄Π΅ΡΡΡ, Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°Π²Π΅ΡΡΠΈΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ! Π§ΡΠΎ ΠΊΠ°ΡΠ°Π΅ΡΡΡ ΡΠΈΡΠ»ΠΎΠ²ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΡΡΠ»ΠΊΠΈ, ΡΡΠΎ ΠΌΠ΅ΡΠ°Π΅Ρ Π²Π°ΠΌ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΊ ΡΡΠ΅ΠΉΠΊΠ°ΠΌ? ΠΠΊΠ½ΠΎ ΡΠ΅Π°ΠΊΡΠΈΠΈ ΠΏΡΠΎΡΠΈΠ² Π²ΠΈΡΡΡΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΡΠ΅Π°ΠΊΡΠΈΠΈ
@oliviertassinari Π― ΠΏΠΎΡΡΠ°Π²ΠΈΠ» ΡΠ΅Π±Π΅ ΡΠ΅Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ API ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° Table
, ΠΈ ΡΠ΅ΠΉΡΠ°Ρ Π½Π΅ ΠΏΠΎΡ
ΠΎΠΆΠ΅, ΡΡΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ ΡΠ΅ΠΊΠ²ΠΈΠ·ΠΈΡΡ ΡΠ΅ΡΠ΅Π· ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Column
. ΠΠ΅ΡΠΎΡΡΠ½ΠΎ, Π΅ΡΡΡ ΡΠΏΠΎΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ Π±Π΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π²ΠΈΡΡΡΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΡΠΏΠΎΡΠΎΠ±Π° ΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Ρ
ΠΎΡΡ
@joshwooding ΠΡ ΠΏΡΠΎΠ±ΠΎΠ²Π°Π»ΠΈ https://github.com/bvaughn/react-virtualized/blob/master/docs/Table.md#headerrowrenderer ?
@oliviertassinari Π― ΠΏΡΠΎΠ±ΠΎΠ²Π°Π» ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ HeaderRowRenderer, Π½ΠΎ ΠΏΠΎΡ ΠΎΠΆΠ΅, ΡΡΠΎ Π²Ρ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ ΡΠ΅ΡΠ΅Π· Π½Π΅Π³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ ΡΠ΅ΠΊΠ²ΠΈΠ·ΠΈΡΡ, Π½Π΅ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΡΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΌΠΈ ΡΠ΅ΠΊΠ²ΠΈΠ·ΠΈΡΠ°ΠΌΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΠΎ ΡΠΎ, ΡΡΠΎ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΡΠΎΠ»Π±ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ΄ΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡΡΡ Π² headerRenderer:
const renderedHeader = headerRenderer({
columnData,
dataKey,
disableSort,
label,
sortBy,
sortDirection,
});
@oliviertassinari ΠΠ»Ρ ΡΠ°Π±Π»ΠΈΡΡ Ρ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ Π²ΡΡΠΎΡΠΎΠΉ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΡΡΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΡ @kgregory : https://codesandbox.io/s/6vo8y0929k
@joshwooding ΠΡΠ»ΠΈΡΠ½ΠΎ ! Π― Π½Π΅ ΠΌΠΎΠ³Ρ Π²ΡΠΏΠΎΠΌΠ½ΠΈΡΡ, ΡΡΠΎΠ±Ρ ΡΡΠΎ-ΡΠΎ ΠΏΡΠΎΠΏΠ°Π»ΠΎ, ΡΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ Π΅Π³ΠΎ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΠ΅ΠΉ.
@issuehuntfest ΠΏΡΠΎΡΠΈΠ½Π°Π½ΡΠΈΡΠΎΠ²Π°Π» ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π² ΡΠ°Π·ΠΌΠ΅ΡΠ΅ 60 Π΄ΠΎΠ»Π»Π°ΡΠΎΠ² Π‘Π¨Π. Π‘ΠΌΠΎΡΡΠΈΡΠ΅ Π½Π° IssueHunt
@oliviertassinari Π― Π±ΡΠ΄Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π°Π΄ ΡΡΠΈΠΌ :)
@joshwooding ΠΎΡΠΏΡΠ°Π²ΠΈΠ» Π·Π°ΠΏΡΠΎΡ Π½Π° Π‘ΠΌΠΎΡΡΠΈΡΠ΅ Π½Π° IssueHunt
@oliviertassinari Π½Π°Π³ΡΠ°Π΄ΠΈΠ» @joshwooding 81 Π΄ΠΎΠ»Π»Π°ΡΠΎΠΌ. Π‘ΠΌΠΎΡΡΠΈΡΠ΅ Π½Π° IssueHunt
@oliviertassinari Π½Π°Π³ΡΠ°Π΄ΠΈΠ» @joshwooding 81 Π΄ΠΎΠ»Π»Π°ΡΠΎΠΌ. Π‘ΠΌΠΎΡΡΠΈΡΠ΅ Π½Π° IssueHunt
ΠΠ°ΡΠ»ΡΠΆΠ΅Π½Π½ΠΎ. ΠΡΠ»ΠΈΡΠ½Π°Ρ ΡΠ°Π±ΠΎΡΠ°, @joshwooding!
Π£ ΠΌΠ΅Π½Ρ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½Π°Ρ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΡ, Π½ΠΎ Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° List ... Π±ΡΠ΄Π΅Ρ Π»ΠΈ ΡΠ°ΠΊΠΎΠΉ ΠΆΠ΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ ΡΠΏΠΈΡΠΊΠ°?
@mdizzy ΠΠ°, ΠΌΡ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΡ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΡ Π² ΡΠΏΠΈΡΠΎΠΊ.
Π― ΡΠ΅ΠΉΡΠ°Ρ ΠΏΡΡΠ°ΡΡΡ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠΏΠΈΡΠΎΠΊ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠΌ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠΊΠ½Π° ΡΠ΅Π°ΠΊΡΠΈΠΈ (ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠΎΠ·Π΄Π°ΡΠ΅Π»Ρ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΠ» ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π²ΠΌΠ΅ΡΡΠΎ Π²ΠΈΡΡΡΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ, Π΅ΡΠ»ΠΈ Π²Π°ΠΌ Π½Π΅ Π½ΡΠΆΠ΅Π½ ΠΏΠΎΠ»Π½ΡΠΉ API, Π½ΠΎ Π² ΠΊΠΎΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΠΎΠ² API Π΄Π»Ρ ΡΠΏΠΈΡΠΊΠ° Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Π½Π΅ ΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΡΠ°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ)
ΠΠΎΠΊΠ° Ρ ΠΌΠ΅Π½Ρ Π΄Π²Π΅ Π±ΠΎΠ»ΡΡΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ:
1) Π‘ΡΠΈΠ»Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠΏΠΈΡΠΊΠ° Π½Π°ΡΡΡΠ΅Π½, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π΄Π»Ρ ΡΠ°ΠΊΠΈΡ
Π²Π΅ΡΠ΅ΠΉ, ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠ΅ Π·Π½Π°ΡΠΊΠΈ / Π΄Π΅ΠΉΡΡΠ²ΠΈΡ. Π― ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ, ΡΡΠΎ Π²Π½Π΅Π΄ΡΠ΅Π½Π½ΡΠΉ ΡΡΠΈΠ»Ρ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ° Π½Π΅ ΠΎΡΠ΅Π½Ρ Ρ
ΠΎΡΠΎΡΠΎ ΡΠΎΡΠ΅ΡΠ°Π΅ΡΡΡ ΡΠΎ ΡΡΠΈΠ»Π΅ΠΌ ΠΈΠ· ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π°-ui
2) ΠΡΠΈΠΊΡΠ΅ΠΏΠ»Π΅Π½Π½ΡΠ΅ ΠΏΠΎΠ΄Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ ΡΠ°ΠΊΠΆΠ΅ ΡΡΠ°Π½ΠΎΠ²ΡΡΡΡ ΠΎΡΠ΅Π½Ρ Π±Π΅ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ½ΡΠΌΠΈ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, ΠΏΠΎ ΡΠΎΠΉ ΠΆΠ΅ ΠΏΡΠΈΡΠΈΠ½Π΅ (Π°Π±ΡΠΎΠ»ΡΡΠ½Π°Ρ ΠΏΠΎΠ·ΠΈΡΠΈΡ Π² ΠΎΠΊΠ½Π΅ ΡΠ΅Π°ΠΊΡΠΈΠΈ Π΄Π»Ρ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ²)
Π―, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, ΠΏΠΎΠΏΡΡΠ°ΡΡΡ Π²ΠΈΡΡΡΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅Π°ΠΊΡΠΈΡ, ΡΡΠΎΠ±Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ, Π»ΡΡΡΠ΅ Π»ΠΈ ΠΎΠ½ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π²ΠΌΠ΅ΡΡΠ΅
@MastroLindus Π― ΠΏΠΎΠ»Π°Π³Π°Ρ, Π²Ρ ΡΠ½Π°ΡΠ°Π»Π° ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°Π»ΠΈ Π½Π°ΡΡ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΡ Π²ΠΈΡΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ?
@oliviertassinari Π― Π½Π°ΡΠ°Π» ΡΠ²ΠΎΠΉ ΠΏΡΡΡ, ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ» ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠ΅ Π²ΡΡΠ΅, ΠΏΠΎΠΈΡΠΊΠ°Π» Π² Google, Π½Π°ΡΠ΅Π» ΡΡΡ Π²Π΅ΡΠΊΡ.
ΠΠ°ΡΠ΅ΠΌ Ρ ΡΠ·Π½Π°Π» ΠΎ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΠΈ Π²ΠΈΡΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ, Ρ ΠΏΡΠΎΠ²Π΅ΡΠΈΠ» Π΅Π΅ ΠΊΠΎΠ΄ ΠΈ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ», ΡΡΠΎ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΡΡΠΎ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅, ΡΡΠΎ Ρ Π΄Π΅Π»Π°Ρ ΡΠ°ΠΌ (ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΊ ΡΠ°Π±Π»ΠΈΡΠ°ΠΌ, Π° Π½Π΅ ΠΊ ΡΠΏΠΈΡΠΊΠ°ΠΌ).
ΠΠΎΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ - ΡΡΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»ΡΡΠ΅ ΡΠ²ΡΠ·Π°Π½Π½ΡΡ
ΡΠΏΠΈΡΠΊΠΎΠ². ΠΠ±ΡΠ°Ρ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, Π½ΠΎ ΡΠ°ΠΊΠΈΠ΅ Π²Π΅ΡΠΈ, ΠΊΠ°ΠΊ Π·Π½Π°ΡΠΊΠΈ, Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, Π»ΠΈΠΏΠΊΠΈΠ΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ, Π½Π΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π΄ΠΎΠ»ΠΆΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ.
ΠΠΎΠ΄ΡΠΎΠ±Π½ΠΎ, ΡΡΡΠ»Π°ΡΡΡ Π½Π° ΠΌΠΎΠΈ 2 ΠΏΡΠ½ΠΊΡΠ° Π² ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²ΡΡΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ:
ΠΡΠΎΠ±Π»Π΅ΠΌΠ° Π½ΠΎΠΌΠ΅Ρ 1 ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ Ρ ΡΠ΅Π°ΠΊΡΠΈΠ²Π½ΡΠΌ ΠΎΠΊΠ½ΠΎΠΌ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈΡΡΡΡΡΠ²ΠΎΠ²Π°ΡΡ Ρ ΡΠ΅Π°ΠΊΡΠΈΠ²Π½ΡΠΌ Π²ΠΈΡΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ. Π― Π΄Π°ΠΌ Π²Π°ΠΌ Π·Π½Π°ΡΡ, ΠΊΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠΏΡΠΎΠ±ΡΡ ΡΠ΅Π³ΠΎΠ΄Π½Ρ ΠΈΠ»ΠΈ Π·Π°Π²ΡΡΠ°. ΠΠΎΠΆΠ΅Ρ, Π½Π°ΠΌ ΠΏΠΎΠ²Π΅Π·Π΅Ρ ΠΈ ΠΎΠ½ ΠΏΡΠΎΡΡΠΎ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ react-virtualized. ΠΠΎΡΠΌΠΎΡΡΠΈΠΌ.
ΠΡΠΎΠ±Π»Π΅ΠΌΠ° Π½ΠΎΠΌΠ΅Ρ 2 (Π»ΠΈΠΏΠΊΠΈΠ΅ ΠΏΠΎΠ΄Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π΄ΠΎΠ»ΠΆΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ) Π― Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ Π² Π»ΡΠ±ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΈΡ
ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, Π²ΡΠ·ΠΎΠ²Π΅Ρ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡ, Π½Π΅ΡΠΌΠΎΡΡΡ Π½ΠΈ Π½Π° ΡΡΠΎ. ΠΡΠΎ-ΡΠΎ ΡΠΎΠ·Π΄Π°Π» https://github.com/marchaos/react-virtualized-sticky-tree Π΄Π»Ρ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ (ΠΈΠΌΠ΅Ρ ΡΠ΅Π°ΠΊΡΠΈΠ²Π½ΠΎ-Π²ΠΈΡΡΡΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΠ΄Π΅Π»ΠΊΡ Ρ Π»ΠΈΠΏΠΊΠΈΠΌΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°ΠΌΠΈ), Π½ΠΎ Ρ ΠΌΠ΅Π½Ρ Π½Π΅ Π±ΡΠ»ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΡΡΠΎΠ±Ρ ΠΈΠ·ΡΡΠΈΡΡ ΡΡΠΎ ΠΏΡΡΠΌΠΎ ΡΠ΅ΠΉΡΠ°Ρ
@MastroLindus ΠΠ°ΠΊΠΈΠ΅ Ρ Π½Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ https://next.material-ui.com/demos/tables/#virtualized -table?
@oliviertassinari ΠΠ΅Ρ.
Π― ΡΠΊΠ°Π·Π°Π», ΡΡΠΎ ΠΌΠΎΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΊΠ°ΡΠ°ΡΡΡΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΡ
ΡΠΏΠΈΡΠΊΠΎΠ², Π° Π½Π΅ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΡ
ΡΠ°Π±Π»ΠΈΡ. (ΠΠΏΡΡΡ ΠΆΠ΅: ΠΈΠ·Π²ΠΈΠ½ΠΈΡΠ΅, ΡΡΠΎ ΠΏΠΈΡΡ ΠΏΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ΅ Π΄Π»Ρ Π²ΠΈΡΡΡΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ
ΡΠ°Π±Π»ΠΈΡ, Π΄Π»Ρ Π²ΠΈΡΡΡΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ
ΡΠΏΠΈΡΠΊΠΎΠ² Π½Π΅Ρ, ΠΈ Ρ ΡΠ»Π΅Π΄ΠΈΠ» Π·Π° ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅ΠΌ @mdizzy )
Π§ΡΠΎ ΠΊΠ°ΡΠ°Π΅ΡΡΡ ΡΠΏΠΈΡΠΊΠΎΠ²: ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ListItemSecondaryAction, ListItemIcon ΠΈ ListSubheader (Ρ Π»ΠΈΠΏΠΊΠΈΠΌΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°ΠΌΠΈ), ΠΏΠΎΡ
ΠΎΠΆΠ΅, Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΈΡ
ΠΏΠΎΠ·ΠΈΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΏΡΡΠ°Π½ΠΎ.
ΠΠ΅Π· ΡΡΠΈΡ
ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Ρ ΠΌΠ΅Π½Ρ Π΅ΡΡΡ Π±Π°Π·ΠΎΠ²ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠ΅Π°ΠΊΡΠΈΠ²Π½ΡΠΌ ΠΎΠΊΠ½ΠΎΠΌ (ΠΈ Ρ Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ΡΠ΄Π΅Π»Π°Π» Π±Ρ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ Ρ ΡΠ΅Π°ΠΊΡΠΈΠ²Π½ΠΎ-Π²ΠΈΡΡΡΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ)
@MastroLindus ΠΡΠΌΠ°Ρ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠ΅ΡΠ΅Π½Π΅ΡΡΠΈ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅ Π½Π° # 15149.
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
@oliviertassinari Π― ΡΠ΄Π΅Π»Π°Π» ΡΡΠΎ Π±Π΅Π·
react-virtualized
ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΡΠΎ Π±ΡΠ» Π±Π΅ΡΠΏΠΎΡΡΠ΄ΠΎΠΊ, ΠΈ ΠΎΠ½ ΠΏΠ»ΠΎΡ ΠΎ ΡΠ°Π±ΠΎΡΠ°Π» Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌΠΈ mui.ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΌΠΎΠ΅ ΡΠ΅ΠΊΡΡΠ΅Π΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΡΠ΅Π»ΠΎ css ΠΈ ΠΏΡΠΎΠΊΡΡΡΠΈΠ²Π°Π΅ΠΌΠΎΠ΅ ΡΠ΅Π»ΠΎ Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ Π²ΡΡΠΎΡΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΡ ΠΈ ΡΠΈΡΠΈΠ½ΠΎΠΉ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΡ ΡΡΠΎΠ»Π±ΡΠΎΠ² (ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΎ Π² Safari).
ΠΡΠ΅Π³Π΄Π° Π½Π°Π²Π΅ΡΡ Ρ ΠΏΠ°Π½Π΅Π»Ρ Ρ ΠΏΡΠΎΠΊΡΡΡΠΈΠ²Π°Π΅ΠΌΡΠΌ ΡΠ΅Π»ΠΎΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ° Π΄Π»Ρ Π³ΡΠΈΠ΄ΠΎΠ² Π΄Π°Π½Π½ΡΡ .
Π― Π΄ΠΎΠ±Π°Π²Π»ΡΡ ΠΏΡΠΎΡΠΈΠ²ΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΏΡΠΎΠΊΡΡΡΠΊΠ΅, Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΈ ΠΈΡΠΏΡΠ°Π²Π»ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ±ΠΎΠΈ, Π½ΠΎ ΠΎΠ½ ΠΎΡΠ»ΠΈΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ: Ρ "Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎ" ΡΠ΅Π½Π΄Π΅ΡΠΈΠ» ΠΎΠΊΠΎΠ»ΠΎ ~ 2400 ΡΡΡΠΎΠΊ, ΠΎΠΎΠΎΡΠ΅Π½Ρ ΠΏΠ»Π°Π²Π½ΠΎ.
ΠΠΎΠΏΡΠΎΡΡ ΠΏΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌ
Table
:ref
Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌΠΈ MUI? Π― Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΡΠΈΡΠ»ΡΡTableThead
height: ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π² ΡΠΎΠΌ, ΡΡΠΎΠ½Π΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° DOM
TableThead
Π° ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ React (ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ React ΠΏΡΠΈ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈref
ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π½Π΅-DOM), ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΡΠΎ ΡΠΎ, ΡΡΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ Π²TableThead
ΡΠ°ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ; ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡΡ Π΄ΡΡΠ³ΠΈΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌ, ΡΠ°ΠΊ ΠΏΠΎΡΠ΅ΠΌΡ Π±Ρ Π½Π΅ ΠΈΠΌΠ΅ΡΡrefHandler
Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ΅ MUI, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅Ρ Π΄Π°Π½Π½ΡΠΉ ΠΎΠ±ΡΠ°ΡΠ½ΡΠΉ Π²ΡΠ·ΠΎΠ² Π² ΠΏΠ΅ΡΠ²ΠΎΠΌ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ΅? (ΠΠ°Π΄Π΅ΡΡΡ, ΠΌΠ½Π΅ ΡΠ΄Π°Π»ΠΎΡΡ ΡΡΠΎ ΠΎΠ±ΡΡΡΠ½ΠΈΡΡ @ _ @)ΠΠΎΠ΅ ΡΠ΅ΠΊΡΡΠ΅Π΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΡΡΠ°Π½Π½ΠΎΠ΅
ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΡΠ°ΡΠ΅Π²ΡΠ΅Π³ΠΎ
findDomNode
ΠΈ ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ eslint.ΠΏΠΎΡΠ΅ΠΌΡ
border-bottom
ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΊ ΡΡΠ΅ΠΉΠΊΠ°ΠΌ Π²ΠΌΠ΅ΡΡΠΎ ΡΡΡΠΎΠΊ?ΠΊΠ°ΠΊ Π½Π°ΡΡΠ΅Ρ Π½Π°Π»ΠΈΡΠΈΡ
stripe={true}
prop Π΄Π»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΡΡΠΎΠΊTableBody
?ΠΏΠΎΡΠ΅ΠΌΡ
.MuiIconButton.root
ΠΈΠΌΠ΅Π΅Ρ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ ΡΡΠΈΠ»Ρ zIndex? π€Π― Π½Π°Π΄Π΅ΡΡΡ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°ΡΡ ΡΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΠ΅ ΠΏΠΎ ΡΡΠΎΠΌΡ ΠΏΠΎΠ²ΠΎΠ΄Ρ Π² Π±Π»ΠΈΠΆΠ°ΠΉΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ, ΡΡΠΎΠ±Ρ Π²Ρ ΠΌΠΎΠ³Π»ΠΈ ΡΠ²ΠΈΠ΄Π΅ΡΡ, ΡΡΠΎ ΡΡΠΎ ΡΠΎ, ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠ½ΡΡΡ Π² ΡΠ΅Π»ΠΎΠΌ.
ΠΠ·Π²ΠΈΠ½ΠΈΡΠ΅, ΡΡΠΎ ΡΠ°ΠΊ Π±Π΅ΡΠΏΠΎΠΊΠΎΡΡΡ, Π½ΠΎ Ρ Π°ΠΊΡΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ mui @ next, ΠΏΠΎΡΡΠΎΠΌΡ Π½Π°Ρ ΠΎΠΆΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ!