当前位置:   article > 正文

react实现表头固定左侧,内容右侧循环,可换行_reactformitem怎么居左

reactformitem怎么居左

效果如下:

代码如下:

js:

  1. import React, {Component,useEffect,useState} from 'react';
  2. import {Row, Col } from 'antd';
  3. import style from './index.module.less';
  4. const TableCricle = React.memo((props) => {
  5. const {
  6. depNameList = [],// 科室列表
  7. inviterList = [],
  8. columns //一共几列(不包括表头)
  9. } = props
  10. const [rows,setRows] = useState();//一共几行表格
  11. const init = () => {
  12. let row = Math.ceil(inviterList?.length/columns)
  13. setRows(row);
  14. }
  15. useEffect(()=>{
  16. init()
  17. },[inviterList])
  18. return <>
  19. <Row className={`${style.line} ${style.tableBox}`}>
  20. {
  21. rows? Array.apply(null, { length: rows }).map((_,index) => {
  22. return <>
  23. <Col span={24%(columns+1)?columns:24/(columns+1)} className={style.tableCell}>
  24. {
  25. depNameList.length>0 && depNameList.map(item => {
  26. return <div className={style[item.styleName]}>{item.name}</div>
  27. })
  28. }
  29. </Col>
  30. {
  31. inviterList.length>0 && inviterList.map((item,i)=>{
  32. if(index*columns-1 < i && i < (index+1)*columns) {
  33. return <Col span={24%(columns+1)?columns:24/(columns+1)} className={style.tableCell}>
  34. {/* <div className={style.depName}>{ item.DepName||'-' }</div>
  35. <div className={style.doctorName}></div> */}
  36. {
  37. depNameList.length>0 && depNameList.map(val => {
  38. return <div className={style[val.styleName]}>{item[val.valName]}</div>
  39. })
  40. }
  41. </Col>
  42. }
  43. })
  44. }
  45. {
  46. // 不足一行补全表格,需要补全的肯定只有最后一行
  47. index === rows-1 && inviterList?.length && inviterList.length < rows*columns ? Array.apply(null, { length: rows*columns - inviterList.length }).map((_,j)=>{
  48. return <Col span={24%(columns+1)?columns:24/(columns+1)} className={style.tableCell}>
  49. {
  50. depNameList.length>0 && depNameList.map(val => {
  51. return <div className={style[val.styleName]}>{j[val.valName]}</div>
  52. })
  53. }
  54. </Col>
  55. }):null
  56. }
  57. </>
  58. }):null
  59. }
  60. </Row>
  61. </>
  62. })
  63. export default TableCricle

css:

  1. .flex {
  2. box-sizing: border-box;
  3. display: flex;
  4. align-items: center;
  5. justify-content: center;
  6. border: 1px solid rgba(51, 51, 51, 1);
  7. margin-left: -1px;
  8. }
  9. .tableBox {
  10. :global {
  11. // 重写样式,适配表格,数字表示总共几列
  12. .ant-col-1 {
  13. max-width: 100%;
  14. }
  15. .ant-col-3 {
  16. max-width: 33.33%;
  17. }
  18. .ant-col-5 {
  19. max-width: 20%;
  20. }
  21. .ant-col-7 {
  22. max-width: 14.28%;
  23. }
  24. .ant-col-9 {
  25. max-width: 11.11%;
  26. }
  27. .ant-col-11 {
  28. max-width: 9.09%;
  29. }
  30. .ant-col-13 {
  31. max-width: 7.69%;
  32. }
  33. }
  34. .tableCell {
  35. display: flex;
  36. flex-flow: column;
  37. .depName,.doctorName{
  38. .flex
  39. }
  40. .depName {
  41. height: 48px;
  42. margin-left: -1px;
  43. margin-top: -1px;
  44. }
  45. .doctorName {
  46. height: 64px;
  47. margin-top: -1px;
  48. }
  49. }
  50. }

使用:

  1. //表头
  2. depNameList: [
  3. {
  4. name: '科室',
  5. styleName: 'depName',
  6. valName: 'DepName'// 表头对应需要展示的值的字段名称
  7. },
  8. {
  9. name: '专家',
  10. styleName: 'doctorName',
  11. valName: ''
  12. }
  13. ],
  14. columns: 5, // 表格科室一共几列
  15. inviterList: [],// 内容列表
  16. <TableCricle depNameList={depNameList} inviterList={inviterList} columns={columns}></TableCricle>

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/115620
推荐阅读
相关标签
  

闽ICP备14008679号