当前位置: 首页 > news >正文

Resume全栈项目(二)(.React+Ts)


文章目录

  • 项目地址
  • 一、前端获取后端Api
    • 1.1 读取Campany列表
      • 1. 创建统一后端接口
      • 2. 封装axios请求
      • 3. 创建接口文档
      • 4. 前端读取数据
    • 1.2 添加Company
      • 1. 添加CreateCompany的interface
      • 2. 添加页面


项目地址

  • 教程作者:
  • 教程地址:
  • 代码仓库地址:
  • 所用到的框架和插件:
dbt 
airflow

一、前端获取后端Api

1.1 读取Campany列表

1. 创建统一后端接口

📂 src
┣ 📂 constants
┃ ┗ 📄 url.constants.ts

  • src里创建constants文件夹,添加url.constans.ts用来存放baseUrl
export const baseUrl = "https://localhost:7129/api";

2. 封装axios请求

  • 封装了 Axios HTTP 客户端,用于简化 API 请求,并且可以统一设置基础 URL、超时时间、请求头等配置
    http.module.ts
import axios from "axios";
import { baseUrl } from "../constants/url.constants";const httpModule = axios.create({baseURL: baseUrl,timeout: 5000, // 5秒超时headers: { "Content-Type": "application/json" }
});export default httpModule;

3. 创建接口文档

📂 src
┣ 📂 types
┃ ┣ 📄 company.types.ts
┃ ┣ 📄 job.types.ts
┃ ┗ 📄 index.ts

  1. company.types.ts 用来处理company页面相关的接口
export interface ICompany {id: string;name: string;size: string;createdAt: string;
}export interface ICreateCompanyDto {name: string;size: string;
}

4. 前端读取数据

  • 使用useEffect读取后端数据

const Companies = () => {const [companies, setCompanies] = useState<ICompany[]>([]);const [loading, setLoading] = useState<boolean>(false);const redirect = useNavigate();useEffect(() => {setLoading(true);httpModule.get<ICompany[]>("/Company/Get").then((response) => {setCompanies(response.data);setLoading(false);}).catch((error) => {alert("Error");console.log(error);setLoading(false);});}, []);//    console.log(companies);return (<div className="content comapnies"><div className="heading"><h2>Companies</h2><Button variant="outlined" onClick={() => redirect("/companies/add")}><Add /></Button></div>{loading ? (<CircularProgress size={100} />) : companies.length === 0 ? (<h1>No Company</h1>) : (<CompaniesGrid data={companies} />)}</div>);
};export default Companies;

1.2 添加Company

1. 添加CreateCompany的interface

  • 创建company的interfrace
export interface ICreateCompanyDto {name: string;size: string;
}

2. 添加页面

  1. 设置表单存储的state
   const [company, setCompany] = useState<ICreateCompanyDto>({ name: "", size: "" });
  1. 获取表单数据

在这里插入图片描述
3. 将表单数据提交

在这里插入图片描述


http://www.mrgr.cn/news/95920.html

相关文章:

  • OpenCV图像拼接(6)根据权重图对源图像进行归一化处理函数normalizeUsingWeightMap()
  • VUE3 路由传参
  • aab 转 apk
  • ⭐算法OJ⭐连接所有点的最小费用【最小生成树】(C++实现)Min Cost to Connect All Points
  • P4147 玉蟾宫
  • MySQL数据库中常用的命令
  • 【NLP 43、大模型技术发展】
  • 【Python LeetCode Patterns】刷力扣,15 个学习模式总结
  • 常用序列的离散时间傅里叶变换(DTFT)
  • Win32 / C++ ini配置文件解析类(支持简易加解密)
  • 【算法】动态规划:回文子串问题、两个数组的dp
  • 3.24[Q]Linux
  • PCL 点云多平面探测
  • 新一代可编程网关应用举例
  • Python Sanic面试题及参考答案
  • P1182 数列分段 Section II
  • 一次由特殊字符引发的Minio签名问题排查
  • 保姆级教程搭建企业级智能体+私有知识库,Dify+ollama,Linux版
  • 基于Python的自然语言处理系列(60):使用 LangChain 构建 Multi-Vector Retriever 进行文档检索
  • ESP-SPARKBOT AI 智能机器人:v1.2 全流程复刻指南