@oliviertassinariããŒãžä»ããªãã§é·ããªã¹ããã¬ã³ããªã³ã°ãããšãã®ããã©ãŒãã³ã¹ãåäžãããããã«ãä»®æ³ã³ã³ããã
ããªããç§ãæ£ããæ¹åã«åããããšãã§ããã°ãç§ã¯ãããåºããŸãïŒ react-virtualized
ïŒïŒ
çŸåšã®APIã§react-virtualized
ãšã®ç°¡åãªçµ±åãå¯èœã«ãªãããšãé¡ã£ãŠããŸãã çµ±åãããç°¡åã«ããããã«ãå®è£
ã«å€æŽãå ããããšãã§ããŸãã
ããã¥ã¡ã³ãã«ãã¢ã®äŸããããšçŽ æŽãããã§ãããã
ããã圹ç«ã€å Žåã¯ããªã¹ã/ã¡ãã¥ãŒhttps://codesandbox.io/s/oQ0nkl5pkãšã®çµ±åäŸã次ã«ç€ºã
@oliviertassinari react-virtualized
ãªãã§äœæããŸãããããã¯æ··ä¹±ããŠããŠãmuiã³ã³ããŒãã³ãã§ã¯ããŸãæ©èœããªãã£ãããã§ãã
ããã«ãç§ã®çŸåšã®ãœãªã¥ãŒã·ã§ã³ã¯ãåçãªããŒãã«ã®é«ããšåçãªåã®å¹
ãåããçŽç²ãªcssåºå®ããããŒãšã¹ã¯ããŒã«å¯èœãªtbodyã§ãïŒSafariã§ããã¹ãæžã¿ïŒã
ã¹ã¯ããŒã«å¯èœãªããã£ãåããåžžæãªã³ãããã®ããããŒã¯ãããŒã¿ã°ãªããã«å¿
é ã§ãã
ã¹ã¯ããŒã«ã®ãããŠã³ã¹ãè¿œå ããããã©ãŒãã³ã¹ã埮調æŽããã°ãªãããä¿®æ£ããŠããŸãããããŸãæ©èœããŠããŸããçŽ2400è¡ããä»®æ³çã«ãã¬ã³ããªã³ã°ããŠããã®ã§ããšãŠãã¹ã ãŒãºã§ãã
Table
ã³ã³ããŒãã³ãã«é¢ãã質åïŒ
ref
ã䜿çšããæ¹æ³ã¯ïŒ ç§ã¯TableThead
é«ããèªåèšç®ããŠããŸãïŒåé¡ã¯ããã§ã<TableHead ref={ ref => this.tableThead = ref }>
TableThead
ã®å®éã®DOMã³ã³ããèŠçŽ ã§ã¯ãªããReactã€ã³ã¹ã¿ã³ã¹ïŒéDOMèŠçŽ ã«ref
ãé©çšãããšãã®Reactã®ãã€ãã£ããªåäœïŒãè¿ããŸããããã¯ã TableThead
é©çšããå¿
èŠãããããã§ãã refHandler
ãæããªãã®ã¯ãªãã§ããïŒ ïŒç§ã¯ããã@ _ @ã§èª¬æããããšãã§ãããšæããŸãïŒ
ç§ã®çŸåšã®è§£æ±ºçã¯å¥åŠã§ã
const theadHeight = ReactDOM.findDOMNode(this.tableThead).clientHeight; // eslint-disable-line react/no-find-dom-node
ããã¯ãéæšå¥šã®findDomNode
ã䜿çšããeslintãç¡å¹ã«ããããšãæå³ããŸãã
border-bottom
ãè¡ã§ã¯ãªãã»ã«ã«é©çšãããã®ã¯ãªãã§ããïŒ
TableBody
è¡ãèªåçã«ã¹ãã©ã€ãåããstripe={true}
å°éå
·ãããã®ã¯ã©ãã§ããïŒ
.MuiIconButton.root
zIndexã¹ã¿ã€ã«ã®ããããã£ãããã®ã¯ãªãã§ããïŒ ð€
ããã«ã€ããŠå®å®ãããã®ãããã«å ¬éããŠãäžè¬çãªæ¹æ³ã§æ¡çšã§ãããã®ãèŠãŠããã ããããã«ããããšæããŸãã
倧å€ç³ãèš³ãããŸãããã mui @ nextãå€çšããŠããã®ã§ãããããã®ãŠãŒã¹ã±ãŒã¹ãèŠã€ããŠããŸãïŒ
ç§ã¯ãããæ··ä¹±ããŠããŠãmuiã³ã³ããŒãã³ãã§ããŸãæ©èœããªãã£ãã®ã§ãreact-virtualizedãªãã§ãããäœããŸããã
ãããããã¯ç§ãã¡ã«ãšã£ãŠæ®å¿µã§ãã ç§ãã¡ãã§ããããšã¯äœã§ãå¯èœã§ããïŒ
ããªãã¯è©Šãããšãã§ããŸãinnerRef
äžåç
§ãååŸããããã«TableHead
ã ref
ã¯ã withStyles(TableHead)
ã³ã³ããŒãã³ãã®åç
§ãååŸããŸãã ãããæ©èœããªãå Žåã¯ã rootRef
ããããã£ãå
¬éã§ããŸãã ããã¯ç§ãã¡ããã§ã«äœ¿çšããŠãããã¿ãŒã³ã§ãã
å šãåãããªã
~~ãããããã¯ç§ãã¡ã«ãšã£ãŠæ®å¿µã§ãã
å®éã«ã¯ã react-virtualized
ç¬èªã®ã³ã³ãããŒããã€ãã£ãã®table/thead/tbody
DOMèŠçŽ ãããã³åé¡ã®åå ãšãªã£ãã¹ã¯ããŒã«å¯èœãªtbody
ã®å¿
èŠæ§ãæ··åšããŠããŸãã
ããã«ã¯ããŸãã«ãå€ãã®äœæ¥ãå¿
èŠã§ããã MuiTable
ã¢ãããã¯ãœãªã¥ãŒã·ã§ã³ãäœæããã®ã¯ç°¡åã§ããã
rootRef
ãå
¬ââéããã®render
ã¡ãœããã®TableThead
ã¡ã€ã³èŠçŽ ã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
ããããã£ãš
ãã®ããã«ããŠãéçºè
ã¯MUIrefãšDOMrefã®äž¡æ¹/ã©ã¡ãããç°¡åã«æã€ããšãã§ããŸãïŒå¿
èŠãªãšãã«ãã€ã§ãïŒã
ããã¯çã«ããªã£ãŠãããšæããŸããïŒ
æ¬åœã«ïŒ @ _ @
ãã£ãšïŒ çŽ æã¹ããã¯ã¯ãã€ãå¿ããŠãŸã
ref
ãšrootRef
ããããã£ãåããŸãref
ãåå¿ãããèŠçŽ ã«é©çšããŸãrootRef
ããããã£ãåãåãããããã«ãŒãã³ã³ããŒãã³ãCã®åç
§ãšããŠé©çšããŸãref
ãReactã€ã³ã¿ãŒã»ããããèŠçŽ ã«é©çšããŸãããããã³ã³ããŒãã³ãCã«ãrootRefããããã£ãããå Žåã¯ã©ããªãã§ããããã
ã³ã³ããŒãã³ãAã¯ãŠãŒã¶ãŒã©ã³ãã«ãã³ã³ããŒãã³ãBã¯TextFieldã«ãã³ã³ããŒãã³ãCã¯FormControlã«é
眮ã§ããŸãã
ã ããç§ã®çãã¯ãæåã¯åçŽãªãã«ããŒãšããŠrootRef
ã玹ä»ããŸããã å·¥æ¥åã«ã€ããŠã¯ãŸã èããŠããŸããã ãããã£ãŠãçŸåšã®åäœã¯æ±ºå®è«çã§ã·ã³ãã«ã§ããã説æããŠããå¶éãªãã§æããŸããåºç€ãšãªãdomèŠçŽ ãžã®ã¢ã¯ã»ã¹ã«é¢å¿ãããå Žåã¯ã
@damianobarbatiããã§èšåãããŠreact-virtual-listããŸãããïŒ
listComponent = TableBodyãitemComponent = TableRowã ãšæããŸããïŒ
ç§ã¯ããªããèå³ãæã£ãŠãããããããªãMaterial1.0ã§react-virtualizedã䜿çšãããã®ãããžã§ã¯ããå§ããŸããã
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ã»ã¯ã·ã§ã³ã«è¿œå ããããšãã§ããŸãã
ããã§ããããžã§ã¯ããããæçãããšãã«ç§ãã¡ã«ç¥ãããŠãã ããã ãããžã§ã¯ãã宣äŒããããã®ãã«ãªã¯ãšã¹ããåãå
¥ããããšãã§ãããšæããŸã:)ã
ç§ã¯ããhttps://github.com/clauderic/react-tiny-virtual-list/pull/30ã§react-virtual-list
PRãè¡ããŸãããããã«ãããmaterial-uiã§ã®äœ¿çšãå¯èœã«ãªããŸãã div
ããŒãã³ãŒãã£ã³ã°ãããŠãããããreact-virtualãæ©èœãããŠæå¹ãªHTMLãäœæããã®ã«èŠåŽããŸããã
ccïŒ @kgregory
@eynããä»äºïŒ react-virtualizedãšmaterial-uiã䜿çšããŠãç¡éã¹ã¯ããŒã«ããŒãã«ã®å®è£ ãå®äºããŸããã ããã«èŠç¹ããŸãšããããšæããŸãã ç§ããããããšããç§ã¯ãã®åé¡ã®å°æ¥ã®èšªåè ã®ããã«ããããŠããããããã¥ã¡ã³ãã®äŸãšããŠãããããã«ãªã³ã¯ããŸãã
@kgregoryèŠç¹ã¯çµãããŸãããïŒ ä»®æ³åããããããªã¢ã«UIããŒãã«ã®åºæ¬çãªãœãªã¥ãŒã·ã§ã³ããŸã æ¢ããŠããŸãããèŠã€ããã®ã¯ç°¡åã§ã¯ãããŸãã...ããã¯å€§ããªå©ãã«ãªãã§ãããïŒ
ãç²ãæ§ã§ããïŒ
@neofoxããããããããªããã ç§ã¯ãããåé¿ããããšã¯ãããŸããããããªãã®è¿äºã¯çŽ æŽãããæãåºã§ãã äœãããŸãšããæéãèŠã€ããããšæããŸãã
@oliviertassinariæåã®ã³ã¡ã³ãã®1ã€ã«ããããªãã®äŸã¯ãreactä»®æ³åãªã¹ãã§ãããªã¢ã«ãªã¹ãã䜿çšããæ¹æ³ã瀺ããŠãããšæãããŸããæ©èœããŠããŸããã ããªãã¯ãŸã ãã®äŸã眮ããŠããŸããïŒ
@rolandjitsuç³ãèš³ãããŸããããäŸã¯ãããŸããã ããããã®åé¡ã®å 容ã§ã:)ã
@oliviertassinariã¯ãããæã«å
¥ããŸããã ãã®åé¡ã¯<List>
ã§ã¯ãªãããŒãã«ã«é¢ãããã®ã ãšæããŸãããããããšããªã¹ããã«ããŒããŠããŸããïŒ
@rolandjitsuãªã¹ããè¡šãçŽãã°ãªãããªã¹ãã ããã¯ãã¹ãŠåãã§ãã ãã®åé¡ã¯ã人ã ããã¿ãŒã³ãèŠãŠããããããŸããŸãªã³ã³ããŒãã³ãã«é©çšã§ããããã«ãç°¡åãªãã¢ãè¿œå ããããšã«é¢ãããã®ã§ãã ããŒãã«ã¯ãä»®æ³åãå¿ èŠã«ãªãå¯èœæ§ãé«ãã³ã³ããŒãã³ãã§ãã
@oliviertassinariããªããç§ãæ£ããæ¹åã«åããããšãã§ããã°ãç§ã¯ããã«äºè£ãäžããããšæããŸãã ç§ã®ç¥ãéããreact-virtualizedãšçµ±åãããmaterial-ui @ nextã®åºæ¬çãªèŠç¹ãå¿ èŠã§ããïŒ
@ hassan-zaheerã¯ããããŒãã«ã®ããã¥ã¡ã³ãããŒãžã®æåŸã«react-virtualizedã䜿çšããç°¡åãªãã¢ã§ããŸããããšæããŸã:)ã
ããã«ã¡ã¯ã ç§ã®ãããžã§ã¯ããç 究ããŠãããšãã«ããã®ã¹ã¬ããã«å¶ç¶åºããããŸããã ãã¢ãŸãã¯äœ¿çšæ³ã®ããã¥ã¡ã³ãã«é¢ããŠãããã§æŽæ°ããããã©ããç¥ãããã§ããïŒ @kgregoryãŸãã¯ã2ã€ãçµã¿èŸŒãéã®æŽå¯ãæäŸã§ããŸããïŒ ããŒãã«ãã¹ã¿ã€ã«ãšèª¿åãããŠèŠããã®ãããã§ããã
@ zd-projectç§ã®mui-virtualized-tableãããžã§ã¯ããèŠãããšãã§ã
以åã¯ãã«ãããŒãã«ã§ãããã2ã€ããã©ãŒã¯ããŠãããŸããŸãªãŠãŒã¹ã±ãŒã¹ããµããŒãããããšã«ããŸããïŒ mui-table
ã¯DOMãçŽæ¥æŽ»çšãã position: sticky
ã<table>
ã¬ã€ã¢ãŠããªã©ã䜿çšã§ããããã«ããŸãïŒè¡/åã¹ãã³ãèªåå¹
ãªã©ïŒreact-virtualizedã§ã¯å°é£ã§ããã
ããã¯èšã£ãŠãã mui-virtualized-table
ã¯ãåªããPRããåã®ãµã€ãºå€æŽãè¿œå ããã ãã§ãã
ç§ãã¡ã¯ãã®äººãã¡ã®ã©ãã«ããŸããïŒ
@techniq ã mui-virtualized-table
ããããšãïŒ ããã¯çŽ æŽãããïŒ mui-org/material-ui
ã«çµ±åã§ããå¯èœæ§ã¯ãããŸããïŒ
誰ããããã¥ã¡ã³ãã«ãã¢ã玹ä»ããPRãéããŠããããå¬ããã§ãã ãã®ããã«ããŠãä»®æ³åæŠç¥ãšã®çµ±åãæ¹åããããã«ããŒãã«APIãæ¹åã§ãããã©ããã調ã¹ãããšãã§ããŸãã
@mastertinnerãªããããã³ã¢ã«è¿œå ããå¿ èŠãããã®ã§ããïŒ ä»®æ³åã¯æé©åæŠç¥ã§ãã 誰ãã倧ããªããŒã¿ã»ãããã¬ã³ããªã³ã°ããããã§ã¯ãªãã®ã§ãç§ã¯ããã§ã¿ããªã®ãã³ãã«ã«è² æ ããããŸããã
@mastertinnerããã¥ã¡ã³ãã§ãããžã§ã¯ããåç §ããããšããå§ããããšãã§ããŸããããšãã°ãhttpsïŒ
ðã¯èšç»ã®ããã«èãããŸã
@mastertinnerç§ã¯ãŸã ããã䜿çšããŠããŸããïŒä»®æ³åãå¿
èŠãªå ŽåïŒãä»®æ³åãå¿
èŠãªãå Žåã¯æ°ããmui-tableã䜿çšããdomã掻çšã§ããŸãïŒ table
ã tr
ã td
ããŸãã¯ã¬ã€ã¢ãŠãçšã®cssã°ãªãããæ瀺çãªåå¹
ã®å¿
èŠæ§ã®æé€ãªã©ïŒãè€æ°ã®position: sticky
ããããŒãªã©ã®é«åºŠãªãã¿ãŒã³ãæå¹ã«ããŸãïŒãã®ããã«ïŒ
@rogerstormã¯ãã®åé¡ã«30ãã«ã®è³éãæäŸããŸããã IssueHuntã§ã芧ãã ãã
ä»æ¥ãããè©ŠããŠã¿ãããšã«ããŸãããç§ã¯ãå§ãããŸããðãããŸã§ã«ç§ãäœæãããã®ã¯æ¬¡ã®ãšããã§ãïŒ
é
ããèš±ããŠãã ãããç§ã®ã©ãããããã¯çŽ æŽãããã§ã¯ãããŸããðããã¯Material-UIã³ã³ããŒãã³ããšreact-virtualized
ã³ã³ããŒãã³ãã䜿çšããŠããŸã
@joshwoodingç§ã¯ããªããããããšãšãŸã£ããåãããšãããŸãããä»®æ³åããã+åºå®ããããŒïŒæ¬äœã«ã®ã¿ã¹ã¯ããŒã«ããŒããããŸãïŒ ã å®è£
ã§2ã€ã®å¥ã
ã®<Table>
䜿çšããŠããå Žåãç§ãèŠã€ããã®ãšåãåé¡ãçºçãããšæããŸãã
<TableCell>
å
ã®ã¬ã€ã¢ãŠãã«<div>
ãããªã³ã³ããŒãã³ãã䜿çšããå¯èœæ§ãããããããããªã¢ã«ã®é
眮å°éå
·ïŒ numeric
ïŒã¯æ©èœããŸãããtd
ãštr
cssããããã£ãæå®ã§ããŸãã height
ãŸãã¯max-height
ãtd
ãštr
ã«äžããæ¹æ³ã¯ãããŸããããŸãããããªã¢ã«ã®<TableCell>
ã¯ç¬èªã®ããã£ã³ã°ãããŒãžã³ããããŸããè¡ã®é«ããä¿®æ£ããã®ã¯é£ããã§ããããŠããã€ã³ãã¯<TableCell>
å
ã®ã³ã³ããŒãã³ããé¿ããããªããšããããšã§ãã ãã®åé¡ãäžåã«è§£æ±ºããã®ã§ã¯ãªãã§ããããã ããã§ãªãå Žåã¯ãä»®æ³å+åºå®ããããŒïŒæ¬äœã®ã¿ã«ã¹ã¯ããŒã«ããŒã䜿çšïŒãå°ããïŒé¢æ°ãšåããããå°ããïŒãæ確ã«å®çŸ©ãããã³ã³ããŒãã³ãã«ããã®ã¯é£ãããšæããŸãã
@worudsoçŸåšã1ã€ã®<Table>
ã®ã¿ã䜿çšããŠããŸããæ°å€ãæž¡ãæ¹æ³ãèŠã€ããå¿
èŠããããŸããããããæ©èœãããããšãã§ããå¯èœæ§ããããŸãã ããã¯ééããªãå°ããªã³ã³ããŒãã³ãã§ã¯ãªããç§ã®ã³ãŒãã¯ãŸã ã©ãã«ã§ããããŸãããããå°ãäœæ¥ããŠããããæ¹è¯ã§ãããã©ããã確èªããŸã
material-uiãšreact-virtualizedã䜿çšããŠä»®æ³åããŒãã«ãäœæããæ¹æ³ã瀺ããµã³ãããã¯ã¹ãäœæããŸããã ãã®ç¹å®ã®äŸã§ã¯ãreact-virtualizedã䜿çšããŠãããŒãã«ã®ãµã€ãºããŠã£ã³ããŠã®é«ãã«åãããŠããŸãã
äŸã®MuiVirtualizedTable
ã³ã³ããŒãã³ããããã®èŠç¹ã§å©çšã§ããŸãã
MuiVirtualizedTable
ã¯ãããŒãã«ã§ãµããŒããããŠãããã¹ãŠã®å°éå
·ãåãå
¥ããããšãã§ããŸãã rowClassName
ã¯çŽæ¥é©çšãããŸãããã代ããã«MuiVirtualizedTable
å®çŸ©ãããŠããä»ã®ã¹ã¿ã€ã«ã«å ããŠé©çšãããŸãã
columns
å°éå
·ã¯ãååã®ã»ã«ãã¬ã³ããªã³ã°ãããšãã«äœ¿çšããããªããžã§ã¯ãã®é
åãæ³å®ããŠããŸãã åãªããžã§ã¯ãã¯ã Columnã§ãµããŒããããŠããä»»æã®å°éå
·ãåãå
¥ããããšãã§ããŸãã
æéãããã£ãŠããŸã£ãããšããè©«ã³ããŸãã ç§ã¯å¿ããã§ãã
åèãŸã§ã«ã react-virtualized
åŸç¶ãšãªãreact-window
ãããŸãã 誰ãããããè©ŠããŠã¿ããå Žåã«åããŠã
@kgregoryã³ãŒããµã³ãããã¯ã¹ãå ±æããŠããã ãããããšãããããŸãã
@joshwoodingçŽ æŽããããã¢ã åºå®ããããŒãããã®ã¯çŽ æŽãããããšã§ã:)ã å®è£ ãå®äºããŠããã ããã°å¹žãã§ãã æ°å€è»¢éã«é¢ããŠãã»ã«ã«çŽæ¥é©çšã§ããªãçç±ã¯äœã§ããïŒ react-windowãšreact-virtualized
@oliviertassinari Table
ã³ã³ããŒãã³ãã®APIã䜿çšãããšããç®æšãèšå®ããŸããããçŸåšã Column
ã³ã³ããŒãã³ããä»ããŠã«ã¹ã¿ã å°éå
·ãæž¡ãããšãã§ããããã«ã¯èŠããŸããã ããããreact-virtualizedã®æ¹æ³ã䜿çšããã«ãããè¡ãæ¹æ³ã¯ãããããããŸã
@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.00ãã«ã®è³éãæäŸããŸããã IssueHuntã§ã芧ãã ãã
@oliviertassinariããã®å®è£ ã«
@joshwoodingããã«ãªã¯ãšã¹ããéä¿¡ããŸããã IssueHuntã§ã芧ãã ãã
@oliviertassinariã¯81.00ãå ±é ¬ãšããŠäžããŸããã IssueHuntã§ã芧ãã ãã
@oliviertassinariã¯81.00ãå ±é ¬ãšããŠäžããŸããã IssueHuntã§ã芧ãã ãã
åœç¶ã®ããšã§ãã ããä»äº@joshwoodingïŒ
åæ§ã®ããŒãºããããŸããããªã¹ãã³ã³ããŒãã³ããå¿ èŠã§ã...ãªã¹ããæ©èœãããããã«åãã¢ãããŒããæ©èœããŸããïŒ
@mdizzyã¯ãããªã¹ãã«åæ§ã®ãã¢ãè¿œå ã§ããŸãã
ç§ã¯ä»ãreact-windowã䜿çšããŠãªã¹ããä»®æ³åããããšããŠããŸãïŒå®å šãªAPIãå¿ èŠãªãå Žåã¯ãä»®æ³åã®ä»£ããã«ãªã¹ãã䜿çšããããšãäœæè ãææ¡ããŸããããæçµçã«ã¯ãªã¹ãã®APIã¯å®éã«ã¯å€æŽãããŸããããã ãïŒ
ãããŸã§ã®ãšããã2ã€ã®å€§ããªåé¡ããããŸãã
1ïŒãªã¹ãã¢ã€ãã ã®ã¹ã¿ã€ã«ã¯ãç¹ã«æ£ããã¢ã€ã³ã³/ã¢ã¯ã·ã§ã³ã®ãããªãã®ã§ã¯å£ããŠããŸãã ä»®æ³ãªã¹ããæ¿å
¥ãããã¹ã¿ã€ã«ã¯ãmaterial-uiã®ã¹ã¿ã€ãªã³ã°ãšããŸãæ©èœããªããšæããŸã
2ïŒããããåãçç±ã§ãã¹ãã£ãããŒãµãããããŒãéåžžã«ä¹±éã«ãªããŸãïŒreact-windowã¯ã¢ã€ãã ã®ã¬ã€ã¢ãŠãã«çµ¶å¯Ÿäœçœ®ã䜿çšããŸãïŒ
ç§ã¯ããããreact-virtualizedãè©ŠããŠãããããäžç·ã«ããŸãæ©èœãããã©ããã確èªããŸã
@MastroLindusæåã«ä»®æ³åãã¢ãè©ŠãããšæããŸããïŒ
@oliviertassinariç§ã¯èªåã®ããæ¹ã§å§ããäžèšã®åé¡ãèŠã€ãã
次ã«ãä»®æ³åãã¢ã«ã€ããŠçºèŠãããã®ã³ãŒãã確èªãããšãããåºæ¬çã«èªåã§è¡ã£ãŠããããšãšåãã§ããããšãããããŸããïŒãªã¹ãã§ã¯ãªãããŒãã«ã«ã®ã¿é©çšãããŸãïŒã
ç§ã®åé¡ã¯ããå°ãé¢é£ãããªã¹ãã§ãã äžè¬çãªæŠå¿µã¯æ©èœããŸãããã¢ã€ã³ã³ãã¢ã¯ã·ã§ã³ãã¹ãã£ãããŒããããŒãªã©ã¯æ£ããæ©èœããŸããã
詳现ã«ã¯ãäžèšã®ã³ã¡ã³ãã®ç§ã®2ã€ã®ãã€ã³ããåç
§ããŠãã ããã
åé¡çªå·1ã¯ãreact-virtualizedã§ã¯çºçããªãreact-windowã®åé¡ã§ããå¯èœæ§ããããŸãã ä»æ¥ãŸãã¯ææ¥è©ŠããŠã¿ããããã«ãç¥ããããŸãã ãã¶ãç§ãã¡ã¯å¹žéã§ãreact-virtualizedã§åäœããã§ãããã ã©ãã©ãã
åé¡2ïŒã¹ãã£ãããŒãµãããããŒãæ£ããæ©èœããªãïŒãšã«ããã¢ãããã¯ãªè§£æ±ºçãå¿
èŠã«ãªããšæããŸãããããã®é
眮ã¯ãäœããã£ãŠã競åãåŒãèµ·ããå¯èœæ§ãããããã§ãã 誰ããåæ§ã®åé¡ïŒã¹ãã£ãããŒããããŒãåŠçããreact-virtualizedãæã£ãŠããïŒã®ããã«https://github.com/marchaos/react-virtualized-sticky-treeãæ§ç¯ããŸããããç§ã¯ä»ããã調ã¹ãæéããããŸããã§ãã
@MastroLindus https://next.material-ui.com/demos/tables/#virtualized -tableã«ã¯ã©ã®ãããªåé¡ããããŸããïŒ
@oliviertassinariãªãã
åé¡ã¯ä»®æ³ããŒãã«ã§ã¯ãªãä»®æ³ãªã¹ãã«åºæã§ãããšæå®ããŸããã ïŒç¹°ãè¿ãã«ãªããŸãããTable Virtualizedã®åé¡ã«ã€ããŠæžããŠããã®ã¯æ®å¿µã§ãããä»®æ³åãªã¹ãã«ã¯äœããããŸããã @ mdizzyã®ã³ã¡ã³ãããŸããïŒ
ãªã¹ãã«ã€ããŠïŒListItemSecondaryActionãListItemIconãããã³ListSubheaderïŒã¹ãã£ãããŒããããŒä»ãïŒã䜿çšãããšãé
眮ãæ··ä¹±ãããããæ©èœããªãããã§ãã
ãããã®ã³ã³ããŒãã³ãããªããã°ãreact-windowã§åäœããåºæ¬çãªãªã¹ããååŸããŸããïŒreact-virtualizedã§ãåãããšãè¡ããšæããŸãïŒ
@MastroLindusãã£ã¹ã«ãã·ã§ã³ãïŒ15149ã«ç§»ãããšãã§ãããšæããŸãã
æãåèã«ãªãã³ã¡ã³ã
@oliviertassinari
react-virtualized
ãªãã§äœæããŸãããããã¯æ··ä¹±ããŠããŠãmuiã³ã³ããŒãã³ãã§ã¯ããŸãæ©èœããªãã£ãããã§ããããã«ãç§ã®çŸåšã®ãœãªã¥ãŒã·ã§ã³ã¯ãåçãªããŒãã«ã®é«ããšåçãªåã®å¹ ãåããçŽç²ãªcssåºå®ããããŒãšã¹ã¯ããŒã«å¯èœãªtbodyã§ãïŒSafariã§ããã¹ãæžã¿ïŒã
ã¹ã¯ããŒã«å¯èœãªããã£ãåããåžžæãªã³ãããã®ããããŒã¯ãããŒã¿ã°ãªããã«å¿ é ã§ãã
ã¹ã¯ããŒã«ã®ãããŠã³ã¹ãè¿œå ããããã©ãŒãã³ã¹ã埮調æŽããã°ãªãããä¿®æ£ããŠããŸãããããŸãæ©èœããŠããŸããçŽ2400è¡ããä»®æ³çã«ãã¬ã³ããªã³ã°ããŠããã®ã§ããšãŠãã¹ã ãŒãºã§ãã
Table
ã³ã³ããŒãã³ãã«é¢ãã質åïŒref
ã䜿çšããæ¹æ³ã¯ïŒ ç§ã¯TableThead
é«ããèªåèšç®ããŠããŸãïŒåé¡ã¯ããã§ãTableThead
ã®å®éã®DOMã³ã³ããèŠçŽ ã§ã¯ãªããReactã€ã³ã¹ã¿ã³ã¹ïŒéDOMèŠçŽ ã«ref
ãé©çšãããšãã®Reactã®ãã€ãã£ããªåäœïŒãè¿ããŸããããã¯ãTableThead
é©çšããå¿ èŠãããããã§ããrefHandler
ãæããªãã®ã¯ãªãã§ããïŒ ïŒç§ã¯ããã@ _ @ã§èª¬æããããšãã§ãããšæããŸãïŒç§ã®çŸåšã®è§£æ±ºçã¯å¥åŠã§ã
ããã¯ãéæšå¥šã®
findDomNode
ã䜿çšããeslintãç¡å¹ã«ããããšãæå³ããŸããborder-bottom
ãè¡ã§ã¯ãªãã»ã«ã«é©çšãããã®ã¯ãªãã§ããïŒTableBody
è¡ãèªåçã«ã¹ãã©ã€ãåããstripe={true}
å°éå ·ãããã®ã¯ã©ãã§ããïŒ.MuiIconButton.root
zIndexã¹ã¿ã€ã«ã®ããããã£ãããã®ã¯ãªãã§ããïŒ ð€ããã«ã€ããŠå®å®ãããã®ãããã«å ¬éããŠãäžè¬çãªæ¹æ³ã§æ¡çšã§ãããã®ãèŠãŠããã ããããã«ããããšæããŸãã
倧å€ç³ãèš³ãããŸãããã mui @ nextãå€çšããŠããã®ã§ãããããã®ãŠãŒã¹ã±ãŒã¹ãèŠã€ããŠããŸãïŒ