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

运行结果如下

也是没有任何问题

相关推荐
今日无bug2 分钟前
大模型的回答是怎么一个字一个字蹦出来的?前端流式输出解析
前端·llm·agent
计算机魔术师3 分钟前
Anthropic 复盘 Claude 模型越权访问真实系统事件并改进对齐与安全措施
前端
掘金者阿豪10 分钟前
Seedance 2.0/2.5 虚拟素材能跨 Key 共用吗?一次讲清 Asset ID、账号隔离与 SaaS 素材架构
前端·后端
用户500937683903920 分钟前
热敏小票 Web 打印:我在 58/80mm 上折腾的两周
前端·vue.js
XGM27 分钟前
一个前端新手的"顿悟"时刻:DOM树、渲染原理和JS动态渲染
前端
东方小月40 分钟前
一篇文章带你深入拆解Skill的本质与工程实现,让你不再滥用Skill
前端·人工智能·后端
空想兔1 小时前
AgentPulse:实时监控所有的 OpenCode Agent 跑到哪一步了
react.js·ai编程
xy34531 小时前
Axure9.0 中继器遮罩的核心应用场景(精准适配列表交互)
前端·ui·html·原型·产品设计·axure9.0
天道kabuto1 小时前
记一次 UnoCSS 样式离奇失效的踩坑复盘
前端
前端小张同学1 小时前
AI全栈开发最佳实践💐
前端·后端·架构