《CMS后台系统》项目实战 详细分解(八)

简介: 《CMS后台系统》项目实战 详细分解(八)

a标签跳转

将Link标签修改为a标签

添加href

跳转新窗口 target="_blank"

<a to="/" className='table_title' href={"http://codesohigh.com:8765/article/" + props.id} target="_blank">{props.title}</a>
复制代码


id的获取

先输出text,看打印内容是什么

代码显示

render: (text, record) => {
      console.log(text)
      return (
        <Space size="middle">
        <Button type='primary' >编辑</Button>
        <Button type='danger'>删除</Button>
        </Space>
      )
    }
复制代码


  • 操作台显示

0f2cbaa0c6bf403bbc10cc19d4895cdf_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png


使用点击事件获取id值(text.key就是我们需要的id)

<Button type='primary' onClick={()=>console.log(text.key)}>编辑</Button>
        <Button type='danger' onClick={()=>console.log(text.key)}>删除</Button>
复制代码


  • 实现效果图(点击按钮输出id到控制台)

d7bfe16b098d48829bd981a071d6d0b7_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png


封装请求文章

将useEffect内部的代码全部剪切到新定义的getArticleList的函数内部。

// 提取请求的代码
  const getArticleList = ()=> {
      ArticleListApi().then(res=>{
        if(res.errCode === 0) {
          let newArr = JSON.parse(JSON.stringify(res.data.arr))
              /* 
                  1. 要给每个数组项加key,让key=id
                  2. 需要有一套标签结构,赋予一个属性
              */
            // 声明一个空数组
            let myarr = []
            newArr.map(item => {
              let obj = {
                  key: item.id,
                  date: moment(item.date).format("YYYY-MM-DD hh:mm:ss"),
                  mytitle: <MyTitle id={item.id} title={item.title} subTitle={item.subTitle} />
              }
              myarr.push(obj)
          })
          setArr(myarr)
        }
    })
  }
  // 请求文章列表
  useEffect(() => {
    getArticleList();
  }, []);
复制代码


分页函数

  • 分页传送门

ant.design/components/…

在Table标签中添加onChange事件

<Table
columns={columns} 
showHeader = {false}
 dataSource={arr}
 onChange={pageChange}
 />
复制代码


书写分页函数

// 分页的函数
const pageChange = (pagination) => {
  console.log(pagination)
}
复制代码


点击换页标签时,操作台会输出以下内容

f7aea647a73248bb996afc4a16731509_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png


  • 在Table标签中pagination

7578cddb28c14dfd9b13c4f327695d45_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png


使用useState设置分页

//分页
  const [pagination,setPagination] = useState({current:1,pageSize:1,total:0})
复制代码


<Table
        columns={columns} 
        showHeader = {false}
         dataSource={arr}
         onChange={pageChange}
         pagination={pagination}
         />
复制代码


  • 请求十条数据

为请求函数设置参数,传入current,pageSize

设置形参

// 提取请求的代码
  const getArticleList = (current,pageSize)=> {
      ArticleListApi({
        num:current,
        count:pageSize
      }).then(res=>{
        if(res.errCode === 0) {
          let newArr = JSON.parse(JSON.stringify(res.data.arr))
              /* 
                  1. 要给每个数组项加key,让key=id
                  2. 需要有一套标签结构,赋予一个属性
              */
            // 声明一个空数组
            let myarr = []
            newArr.map(item => {
              let obj = {
                  key: item.id,
                  date: moment(item.date).format("YYYY-MM-DD hh:mm:ss"),
                  mytitle: <MyTitle id={item.id} title={item.title} subTitle={item.subTitle} />
              }
              myarr.push(obj)
          })
          setArr(myarr)
        }
    })
  }
复制代码


调用getArticleList() 传入实参

// 请求文章列表
  useEffect(() => {
    getArticleList(pagination.current,pagination.pageSize);
  }, []);
复制代码


实现效果

173cd6841689440f8f7d635ccd6bb02f_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png


换页按钮变为了一页,原因没有设置总条数。

找到分页的total属性

07d85c023ab844a48ca46a094b4672e9_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png


注意:这里视频突然发现Table有total属性。这里再度尝试输出res.data,看是否返回数据有total。

273de9f060bd4754b545af0d7f0e8ccf_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png


console.log(res.data)
复制代码

微信截图_20221112084413.png


请求数据之后更改pagination

// 更改pagination
let { num, count, total } = res.data;
setPagination({ current: num, pageSize: count, total })
复制代码


点击分页按钮后会返回一串数据

微信截图_20221112084435.png


在分页函数中调用getArticleList封装请求函数(更新点击就调用getArticleList)

// 分页的函数
const pageChange = (arg) => getArticleList(arg.current, arg.pageSize);
复制代码


滚动样式

想要实现的效果

微信截图_20221112084455.png


实际存在的问题,内容超出

微信截图_20221112084515.png


  • 给面包屑设置高度
<Breadcrumb style={{height: '30px',background:'red', lineHeight: '30px'}}>
复制代码

微信截图_20221112084533.png


  • 修改整体页面高度

在base.less中

.container_content{
    height: calc(100vh - 210px);
    overflow: hidden;
}
复制代码


App组件

function App() {
    return (
        <Layout id='app'>
            <Header/>
        <div className='container'>
         <Aside />       
        <div className='container_box'>
            <Bread/>
            <div className="container_content">
            <Outlet />
          </div>
        </div>
      </div>  
       <footer>Respect | Copyright &copy; 2022 Author 你单排吧</footer>
      </Layout>
    );
}
复制代码


在ListTable.less中添加滚动

.list_table{
    width: 100%;
    background: #fff;
    height: 100%;
    overflow-y: scroll;
    &::-webkit-scrollbar {
        /*滚动条整体样式*/
        width: 10px;
        height: 100%;
        background: #fff;
        border-radius: 10px;
    }
    &::-webkit-scrollbar-track {
        /*滚动条里面轨道*/
        box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);
        border-radius: 10px;
        background: #EDEDED;
    }
    &::-webkit-scrollbar-thumb {
        /*滚动条里面小方块*/
        border-radius: 10px;
        box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);
        background: #535353;
    }
    .table_title{
        color: #333;
        &:hover{
            color: #1890ff;
        }
    }
}
复制代码


注意记得把那个面包屑背景颜色去掉!!!


  • 最终实现效果

微信截图_20221112084757.png



目录
相关文章
|
4月前
|
架构师 Java
jvm性能调优实战 - 35电商APP后台系统如何对Full GC进行深度优化
jvm性能调优实战 - 35电商APP后台系统如何对Full GC进行深度优化
82 0
|
数据库
【自然框架】CMS之数据库设计
    在园子里也混了三年多,随笔200多,一开始只是想把自己的经验写一下,后来呢弄出来了一个“自然框架”,主要精力就放在了介绍自然框架的思路上面了。随笔多了就发现一个问题:有点乱。虽然博客有分组,但是只支持一级分组,不支持n级的。
1572 0
|
1月前
|
消息中间件 算法 前端开发
京东面试:说说CMS工作原理?
京东面试:说说CMS工作原理?
34 2
|
4月前
|
Prometheus 监控 Cloud Native
JVM工作原理与实战(三十三):监控GC过程的工具
JVM作为Java程序的运行环境,其负责解释和执行字节码,管理内存,确保安全,支持多线程和提供性能监控工具,以及确保程序的跨平台运行。本文主要介绍了jstat工具、VisualVM插件、Prometheus + Grafana、GC日志等内容。
128 0
|
小程序 数据可视化 数据库
云开发(微信-小程序)笔记(十七)---- cms(内容管理)及案例
云开发(微信-小程序)笔记(十七)---- cms(内容管理)及案例
501 0
|
存储 缓存 前端开发
项目实战典型案例13——学情页面逻辑问题
项目实战典型案例13——学情页面逻辑问题
57 0
|
存储 缓存 前端开发
【项目实战典型案例】13.学情页面逻辑问题
【项目实战典型案例】13.学情页面逻辑问题
|
存储
《CMS后台系统》项目实战 详细分解(四)
《CMS后台系统》项目实战 详细分解(四)
126 0
《CMS后台系统》项目实战 详细分解(四)
|
前端开发 API
《CMS后台系统》项目实战 详细分解(九)
《CMS后台系统》项目实战 详细分解(九)
100 0
《CMS后台系统》项目实战 详细分解(九)
《CMS后台系统》项目实战 详细分解(六)
《CMS后台系统》项目实战 详细分解(六)
83 0
《CMS后台系统》项目实战 详细分解(六)