react 缩放列表

简介: react 缩放列表

在页面渲染时难免会遇见需要列表缩放展示的,在react中依靠组件就可以实现,组件ColumnsType渲染时当数据中含有children时会带有缩放按钮

let array = [];
      let child = [];
      for (let i = 0; i < res.data.data.list.length; i++) {
        if (res.data.data.list[i].pid === 0) {
          array.push(res.data.data.list[i]);
        } else {
          child.push(res.data.data.list[i]);
        }
      }
      for (let i = 0; i < array.length; i++) {
        array[i].children = [];
        array[i].key = i + 1;
        for (let j = 0; j < child.length; j++) {
          if (child[j].pid === array[i].id) {
            array[i].children.push(child[j]);
          }
        }
      }
      for (let i = 0; i < array.length; i++) {
        for (let j = 0; j < array[i].children.length; j++) {
          array[i].children[j].key = i + 1 + '-' + (j + 1);
        }
      }

注:数据中需要相关key值,否则点击会触发全部

然后就是数据渲染

  const columns: ColumnsType<DataType> = [
    {
      title: '档级id',
      dataIndex: 'id',
      key: 'id',
    },
    {
      title: '档级名称',
      dataIndex: 'title',
      key: 'title',
    },
    {
      title: '档级薪资',
      dataIndex: 'money',
      key: 'money',
    },
    {
      title: '操作',
      dataIndex: 'pid',
      key: 'pid',
      width: '30%',
      align: 'center',
      render: (pid, row) => (
        <Tooltip placement="topLeft">
          <div style={{ width: '100%', display: 'flex', justifyContent: 'space-around' }}>
            <Button
              type="primary"
              onClick={() => {
                console.log(row);
                setEdit(true);
                form.setFieldsValue({
                  editjobs: row.title,
                  editnum: row.money,
                });
                sessionStorage.setItem('dangId', row.id);
                sessionStorage.setItem('dangpid', row.pid);
              }}
            >
              编辑
            </Button>
            <Button
              type="primary"
              disabled={pid !== 0 ? true : false}
              onClick={() => {
                console.log(row);
                setAddchil(true);
                form.setFieldsValue({
                  chilitem: row.id,
                  chiljobs: '',
                  chilnum: '',
                });
              }}
            >
              添加子集
            </Button>
            <Popconfirm
              title={'您是否要删除它(删除顶级会连带子集一起删除)?'}
              onConfirm={() => {
                confirm(row.id);
              }}
              okText="确定"
              cancelText="取消"
            >
              <Button type="primary" danger>
                删除
              </Button>
            </Popconfirm>
          </div>
        </Tooltip>
      ),
    },
  ];

最后渲染到页面上

 <div>
        <Table columns={columns} dataSource={data} />
      </div>

看看效果



目录
打赏
0
0
0
0
57
分享
相关文章
React-组件-内联样式 和 React-组件-列表渲染优化
React-组件-内联样式 和 React-组件-列表渲染优化
110 0
React音频播放列表组件:常见问题、易错点与解决方案
本文介绍了在React中实现音频播放列表时常见的挑战及解决方案。通过基础实现、常见问题分析和最佳实践,帮助开发者避免状态管理、生命周期控制和事件处理中的陷阱。关键点包括使用`useRef`操作音频元素、`useState`同步播放状态、全局状态管理防止多音频同时播放、以及通过`useEffect`清理资源。还提供了代码示例和跨浏览器兼容性处理方法,确保高效实现功能并减少调试时间。
85 30
React音频播放列表组件开发实战:常见问题与避坑指南
本文介绍了构建React音频播放列表组件的核心架构与常见问题解决方案。通过管理播放状态、列表索引和音频进度,结合异步控制、状态清理、节流优化等技术,确保流畅的用户体验。针对移动端兼容性、内存泄漏、列表渲染性能等问题提供了具体修复方案,并分享了自定义Hook封装、可视化音频波形等进阶实践。最后,总结了性能优化法则和测试关键点,帮助开发者打造生产级可靠的音频播放组件。
60 18
React 列表 & Keys
10月更文挑战第9天
30 0
写 React / Vue 项目时为什么要在列表组件中写 key
在React或Vue项目中,为列表组件中的每个元素添加唯一的key属性,有助于框架高效地更新和渲染列表。Key帮助虚拟DOM识别哪些项已更改、添加或删除,从而优化性能并减少不必要的重新渲染。
|
8月前
|
react18【实战】tab切换,纯前端列表排序(含 lodash 和 classnames 的安装和使用)
react18【实战】tab切换,纯前端列表排序(含 lodash 和 classnames 的安装和使用)
92 1
【边做边学】利用React创建交互式ToDo列表
【边做边学】利用React创建交互式ToDo列表
基于React和Redux的待办事项列表应用
基于React和Redux的待办事项列表应用
95 0
|
10月前
|
构建一个简单的React待办事项列表应用
构建一个简单的React待办事项列表应用
75 0
react 商品列表返回顶部
react 商品列表返回顶部