react项目实战学习笔记-学习29-获取文章列表

简介: react项目实战学习笔记-学习29-获取文章列表
import React, { useState, useEffect } from 'react'
import './less/ListTable.less'
import { Table, Button, Space, message } from 'antd';
import moment from 'moment'
import { ArticleListApi, ArticleDelApi } from '../request/api'
import { useNavigate } from 'react-router-dom'
// 标题组件
// function MyTitle(props) {
//     return (
//         <div>
//             <a className='table_title' href={"http://codesohigh.com:8765/article/" + props.id} target="_blank">{props.title}</a>
//             <p style={{ color: '#999' }}>{props.subTitle}</p>
//         </div>
//     )
// }
export default function ListTable() {
    // 列表数组
    const [arr, setArr] = useState([])
    // const navigate = useNavigate()
    // 分页
    const [pagination, setPagination] = useState({ current: 1, pageSize: 10, total: 0 })
    // 提取请求的代码
    const getArticleList = (current, pageSize) => {
        ArticleListApi({
            num: current,
            count: pageSize
        }).then(res => {
            if (res.errCode === 0) {
                // 更改pagination
                let { num, count, total } = res.data;
                setPagination({ current: num, pageSize: count, total })
                // 深拷贝获取到的数组
                let newArr = JSON.parse(JSON.stringify(res.data.arr));
                // 声明一个空数组
                let myarr = []
                /* 
                    1. 要给每个数组项加key,让key=id
                    2. 需要有一套标签结构,赋予一个属性
                */
                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)
            }
        })
    }
    // 请求文章列表(mounted)
    useEffect(() => {
        getArticleList(pagination.current, pagination.pageSize);
    }, [])
    // 分页的函数
    const pageChange = (arg) => getArticleList(arg.current, arg.pageSize);
    // 删除
    const delFn = (id) => {
        // ArticleDelApi({ id }).then(res => {
        //     if (res.errCode === 0) {
        //         message.success(res.message)
        //         // 重新刷页面,要么重新请求这个列表的数据   window.reload   调用getList(1)  增加变量的检测
        //         getArticleList(1, pagination.pageSize);
        //     } else {
        //         message.success(res.message)
        //     }
        // })
    }
    // 每一列
    const columns = [
        {
            dataIndex: 'mytitle',
            key: 'mytitle',
            width: '60%',
            render: text => <div>{text}</div>
        },
        {
            dataIndex: 'date',
            key: 'date',
            render: text => <p>{text}</p>,
        },
        {
            key: 'action',
            render: text => {
                return (
                    <Space size="middle">
                        {/* text.key就是id */}
                        {/* <Button type='primary' onClick={() => navigate('/edit/' + text.key)}>编辑</Button> */}
                        <Button type='danger' onClick={()=>delFn(text.key)}>删除</Button>
                    </Space>
                )
            },
        },
    ];
    return (
        <div className='list_table'>
            <Table
                showHeader={false}
                columns={columns}
                dataSource={arr}
                onChange={pageChange}
                pagination={pagination}
            />
        </div>
    )
}

image.png

相关文章
|
10天前
|
前端开发 API UED
怎么学习React 18 进行项目开发?
【4月更文挑战第18天】学习React 18涉及新特性如并发模式、Suspense API和自动批处理更新,可提升性能和用户体验。首先了解这些新特性,然后掌握React基础知识,如组件化、JSX、props和state。使用Create React App创建项目,学习如何启用并发模式和使用Suspense显示占位符。实现自定义组件,关注props传递、状态管理和事件处理。通过Profiler优化性能,利用懒加载和代码分割减少加载时间,使用Context API共享状态。不断实践和探索,参考官方文档与社区资源,以提高开发技能。
89 3
|
19天前
|
前端开发 JavaScript API
如何学习react
【4月更文挑战第9天】 学习React前,需掌握JavaScript基础,了解React的JSX、组件、props、state和生命周期等概念。安装Node.js和npm,用Create React App搭建环境。学习核心API,如React.createElement、React.render等,并阅读官方文档。实践项目,从Todo List开始,逐渐挑战复杂应用。同时,学习相关技术如Redux、React Router,并参与社区交流,持续关注React新发展。持之以恒,祝学习顺利!
27 10
|
3月前
|
开发框架 前端开发 JavaScript
从零开始学习React Native开发
React Native是一种基于React框架的移动端开发框架,使用它可以快速地构建出高性能、原生的移动应用。本文将从零开始,介绍React Native的基础知识和开发流程,帮助读者快速入门React Native开发,并实现一个简单的ToDo应用程序。
|
5月前
|
人工智能 JSON 前端开发
react17+ts 学习
react17+ts 学习
|
2月前
|
运维 JavaScript 前端开发
发现了一款宝藏学习项目,包含了Web全栈的知识体系,JS、Vue、React知识就靠它了!
发现了一款宝藏学习项目,包含了Web全栈的知识体系,JS、Vue、React知识就靠它了!
|
2月前
|
前端开发
React学习笔记(一)
React学习笔记(一)
|
2月前
|
前端开发
React学习笔记
React学习笔记
|
3月前
|
存储 前端开发 JavaScript
从零开始学习React Native开发
【2月更文挑战第1天】React Native是一种跨平台的移动应用程序框架,可以使用JavaScript和React来构建Android和iOS应用程序。本文将带您从零开始学习React Native开发,涵盖了基础知识、组件、样式、布局、API等方面。
|
4月前
|
前端开发
react 商品列表返回顶部
react 商品列表返回顶部
|
4月前
|
Rust 前端开发 JavaScript
IM跨平台技术学习(十):快速对比跨平台框架Electron、Flutter、Tauri、React Native等
在本文中,我们将比较五种流行的桌面应用程序开发框架:Electron、Flutter、Tauri、React Native 和 Qt,希望可以帮助你根据项目需求做出明智的技术选型决策。
166 2