我们在项目src目录下创建一个目录 叫 pages
在里面创建一个组件叫 list.tsx
这里 我启动了自己的java项目 创建接口
你们就也需要弄几个自己的接口做测试
然后 list.tsx 编写代码如下
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>)}
}
这里 一定要记得放反向代理 免得跨域了
然后 我们运行项目 数据就呈现出来了
然后 我们改写代码如下
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
运行结果如下
也是没有任何问题