IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> 对antd table组件的封装,让框架用法更简单一点【react】【毕设总结】【table】【前端】 -> 正文阅读

[JavaScript知识库]对antd table组件的封装,让框架用法更简单一点【react】【毕设总结】【table】【前端】

对 antd 的 table 组件进行封装

最近1个月来 都在搞毕设,很多时候前端写的都是 无用,重复性的代码, 对一些框架不熟练,要不停的看文档,效率比较低,这里 按照 自己的想法 ,对 封装了一下。

这个是 写后台页面 经常要用到的table 组件

import React,{useEffect, useState} from 'react'
import { Table } from 'antd'
const EasyTable = (props) => {

  let config = props?.config
  const alias = props.alias || []
  const [columns, setColumns] = useState([])
  const initColumns = () => {
    const newCol = []
    for (let i = 0; i < alias.length; i++) {
      let aliaConfig = alias[i]
      let keyArray = Object.keys(aliaConfig)
      let title = keyArray.find(item => item != 'render')
      let cur = {
        title: aliaConfig[title] || '未知属性',
        dataIndex: title,
        key: title,

      };
      if( aliaConfig.render ) {
        cur.render = aliaConfig.render
      }
      newCol.push(cur)
    }
    setColumns(newCol)
  }

  useEffect(()=> {
    initColumns()

  },[])
  return (
    <div>
      <Table
        columns={config.columns||columns}
        {...config}
        rowKey={props.rowKey||(columns.length>0 ? columns[0]["key"]:'id')}
        dataSource={props.data||props.value||config.data||config.value||[]}

      />
    </div>
  )
}


export default EasyTable




这个是后台管理页面用到的

import EasyTable from 'components/table/easyTable'
import React, { useEffect,useState } from 'react'
import { Tag } from 'antd'
import Request from 'api/Request'
import Link from 'components/link/Link'
const FileManager = (props) => {
  const [page,setPage] = useState(1)
  const [size,setSize] = useState(10)
  const [totalCount,setTotalCount ] = useState(0)
  const [data,setData] = useState([])
  const [current,setCurrent] = useState(1)
  const fetch = ()=> {
    Request({
      url:'/api/admin/permit/files',
      method:"GET",
      params: {
        page:current,
        size
      }
    }).then(res=> {
      // console.log(res) 
      let ret = res?.data?.data 
      let arr = ret?.data 
      setPage(ret.curPage)
      setSize(ret.size)
      setTotalCount(ret.totalCount)
      console.log('ret',ret)
      setData(arr)

    })
  }
  useEffect(() => {
    fetch()
  }, [current])



  return (
    <div>
      文件审核
       <EasyTable
        alias={[
          {
            fileNodeId: '文件Id'
          },
          {
            userId: '用户Id'
          }, {
            storeType: '文件类型'
          }, {
            // filePath: '文件路径',
            key:'文件路径',
            render: (val,row,index) => {
              return (
                <Link url={row.filePath} text={row.nodeName||"文件链接"} />
              )
            }
          }, {
            key: '审核状态',
            render: (value, row, index) => {
              let status = '未审核'
              if (row.permitStatus==0) {

              }else if (row.permitStatus==1) {
                status = '审核通过'
              }else if (row.permitStatus==-1) {
                status = '审核结束'
              }
              return (
                <div>
                  <Tag>{status}</Tag>
                </div>
              )
            }
          }
        ]}
        data={data}
        config={{
          pagination: {
            current:page,
            pageSize:size,
            total:totalCount,
          },
          onChange: (el) => {
            // console.log(el)
            let {current,pageSize} = el 
            // console.log(current)

            setCurrent(current)
            // setSize(pageSize)
            

          }

        }}

      /> 
    </div>
  )
}


export default FileManager

 

效果

在这里插入图片描述

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-01-16 12:57:45  更:2022-01-16 12:59:53 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 12:30:59-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码