React后台管理(十三)-- 页面常用hook封装 --- useTable封装


前言

紧接上一篇,本篇主要讲和表格相关的全局hook函数封装。


一、useTable自定义hook封装

结构分析:
(1)这个 useTable 钩子的功能是用于管理表格的高度
(2)接受一个可选的 params 对象作为参数,可以包含 id 和 offset 两个属性
(3)定义getHeight函数,实时计算表格区域高度,控制滚动区域

1. hook文件代码+详细注释

// @/hook/use-table/index.jsx
import { useState } from "react";
export const useTable = (params = {}) => {
  // 用于指定表格元素的ID,默认为 render-body
  const id = params.id || "render-body";
  // 用于指定表格元素的高度偏移量,默认为 40
  const offset = params.offset || 40;
  const [tableHeight, setHeight] = useState();
  const getHeight = () => {
    return new Promise((resolve, reject) => {
      setTimeout(() => {
        const table = document.getElementById(id);
        // 设置表格高度
        setHeight(table.offsetHeight - offset);
        resolve();
      });
    });
  };

  return {
    tableHeight,
    getHeight,
  };
};

2. 页面使用方式

// 引入hook
import { useTable } from "@/hook/index.js";
// 调用
const { getHeight, tableHeight } = useTable();
// 点击展开/收起,表格高度必然要发生变化,调用getHeight更新表格高度
const handlerToggle = (value) => {
  getHeight();
};
//在表格组件,绑定高度变量
<Table
  rowKey="id"
  loading={loading}
  columns={columns}
  dataSource={customerData.list}
  scroll={{
    y: tableHeight,
  }}
  pagination={false}
/>

3. 效果展示

在这里插入图片描述
在这里插入图片描述


总结

下一篇讲【示例页面构建教学】。关注本栏目,将实时更新。

  • 11
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值