Fork me on GitHub

antd多个table表格同步滚动

 1         <div className={styles.test_table} onScrollCapture={this.handleScrollTable} ref={this.table}>
 2                 <Table
 4                   columns={[...partInfoHeader]}
 5                   dataSource={[...partInfoDataSource]}
 6                   scroll={{
 7                     x: 1300,
 8                   }}
 9                 />
10               </div>
 1     <div ref={this.editTable}>
 2             {
 3               tableList.map((item, index)=> {
 4                 return (
 5                   <div className={styles.table_box}  key={index} onScrollCapture={this.handleScrollEditTable}>
 6                     <Collapse defaultActiveKey={['1']} expandIconPosition="right" ghost>
 7                       <Panel header={item.name} key="1">
 8                         <EditTalble 
10                           tableData={item.paramArray} 
11                           tabelHeader={item.columns}  
12                           editkeys={item.editKeys}
13                           update={(data)=> { this.handleUpdatetable(data, index)}}/>
14                       </Panel>
15                     </Collapse>
16                   </div>
17                 )
18               })
19             }
20           </div>

两个表格都要添加 onScrollCapture 方法,第二个表格是遍历出来的9个表格,因此在最外层加 ref,这样当之后需要对9个表格进行操作时,可以通过 ref 取到父节点,之后遍历获取想要的所有的子节点,(注意不要再 return 的 div 里加 ref,因为这样只加给了最后一个表格),代码如下:

 1 handleScrollTable = (scroll) => {
 2     console.log('childNodes', this.editTable.current.childNodes); 
5
this.editTable.current.childNodes.forEach( item => { 6 let itemBody = item.querySelector('.ant-collapse-content-box') 7 itemBody.scrollLeft = scroll.target.scrollLeft 8 }) 9 }
1 handleScrollEditTable = (scroll) => {
2     const tableBody = this.table.current.querySelector('.ant-table-content')
4     tableBody.scrollLeft = scroll.target.scrollLeft
5   }

 

posted @ 2022-07-18 22:03  让梓航飞  阅读(1057)  评论(0)    收藏  举报