React+Typescript从请求数据到列表渲染

我们在项目src目录下创建一个目录 叫 pages

在里面创建一个组件叫 list.tsx

这里 我启动了自己的java项目 创建接口

你们就也需要弄几个自己的接口做测试

然后 list.tsx 编写代码如下

typescript 复制代码
import * as React from "react";


export default class hello extends React.Component<any,any> {

    public componentDidMount() {
        fetch("/books").then(res =>res.json()).then(data =>{
          console.log(data);
        });
    }

    public render() {
        return (
            <div>
                测试请求
            </div>
        )
    }
}

这里 一定要记得放反向代理 免得跨域了

然后 我们运行项目 数据就呈现出来了

然后 我们改写代码如下

typescript 复制代码
import * as React from "react";

interface IProps {
}

interface IState {
    data: any
}

export default class hello extends React.Component<IProps,IState> {

    public readonly state: Readonly<IState> = {
        data: []
    }
    
    public constructor(props:IProps){
        super(props);
    }

    public componentDidMount() {
        fetch("/books").then(res =>res.json()).then(data =>{
            this.setState({
                data: data.data
            })
        });
    }

    public render() {
        return (
            <div>
                {
                    this.state.data.length > 0
                    ?<ul>
                        {
                            this.state.data.map((item:any,index:number) => {
                                return <li key = { index }>{ item.name }</li>
                            })
                        }
                    </ul>
                    :
                    <div>暂无数据</div>
                }
            </div>
        )
    }
}

首先 我们定义IState限制state格式 里面有一个字段 data

任意类型的

然后 我们fetch请求回来数据之后 直接通过setState 将请求回来的数据中的 data 赋值给state中的data

然后界面上 我们先用三元运算符 判断 如果data长度是有的 就渲染 如果没有给用户提示 暂无数据

然后 渲染的地方 我们用了一个基本的map循环

item接受每个下标值 index接受当前是第几个下标

用 index 当元素的key标识

然后 每个元素展示当前元素的 name

运行结果如下

也是没有任何问题

相关推荐
tiankongdeyige7 小时前
游戏战斗系统学习第2篇:有限状态机 (FSM)
学习·游戏·typescript
前端snow8 小时前
ai agent --- postgreSQL 关系型数据库
前端
卷无止境9 小时前
ECharts:把数据变成故事的可视化利器
前端
Eric_见嘉9 小时前
在职前端 Skill 和 MCP 分享
前端·后端·agent
liangshanbo12159 小时前
面试题:如何优化 Webpack 的打包速度?
前端·webpack·node.js
wengad9 小时前
从 wangEditor 迁到 wangEditor-next
前端·javascript·vue.js
行者-全栈开发10 小时前
【前端/JS框架】CVE-2026-3854:GitHub Enterprise Server X-Stat注入XSS漏洞深度剖析与紧急修复指南
前端·javascript·github
计算机魔术师11 小时前
AMD砸82亿买下李飞飞,这次不卖芯片卖什么?
前端
hzxpaipai12 小时前
杭州企业官网怎么建设?从策划到上线的5步建站方法
运维·服务器·前端·网络
怕浪猫12 小时前
2026年金九银十,我面了22个前端
前端·javascript·面试