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

运行结果如下

也是没有任何问题

相关推荐
0思必得028 分钟前
[Web自动化] Requests模块响应的内容
运维·前端·python·自动化·html·web自动化
醉逍遥neo1 小时前
react项目热更新问题
前端·react·热更新·umi·umi max
专注前端30年1 小时前
Vue3 watchEffect详解:核心用法与原理剖析
前端·javascript·vue.js
hwt10703598981 小时前
Vue项目,解决Node依赖错误问题
前端·javascript·vue.js
LYFlied2 小时前
前端性能优化工程化落地指南:从基础实践到极致性能突破
前端·性能优化·工程化
阿珊和她的猫2 小时前
Webpack常用配置项详解
前端·webpack·node.js
codelang2 小时前
用另一种方式让《留白》继续存在下去
前端
研☆香2 小时前
什么是对象 什么是数组 区别是什么??
java·前端·javascript
vx_bisheyuange2 小时前
基于SpringBoot的房屋交易平台
前端·javascript·vue.js·毕业设计
千里马-horse2 小时前
React Native 源码分析 -- jsi.h
javascript·c++·react native·react.js·jsi