当前位置: 首页 > 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. 将表单数据提交

在这里插入图片描述

相关文章:

  • AI知识补全(四):微调 Fine-tuning 是什么?
  • Java-01-源码篇-并发编程-资源竞争
  • 《算法笔记》9.6小节 数据结构专题(2)并查集 问题 D: More is better
  • 【TVM教程】使用自定义调度规则(Sketch Rule)在 CPU 上自动调度稀疏矩阵乘法
  • 代码随想录算法训练营第十四天| 226.翻转二叉树、101. 对称二叉树、104.二叉树的最大深度、111.二叉树的最小深度
  • ​​​​​​​深入解析外观模式(Facade Pattern)及其应用 C#
  • Python(request库)
  • c#难点整理3
  • C# Modbus RTU学习记录
  • Qt Concurrent Filter and Filter-Reduce
  • 雨晨 Windows 11 企业版 24H2 轻装版 26200.5510
  • 技术团队评估需求开发成本远超预期,如何应对
  • JS闭包--函数式编程的核心概念
  • Springboot 集成 Flowable 6.8.0
  • docker远程debug
  • SpringBoot项目图片上传成功,访问404
  • WordPress自动代码高亮插件Code Prettify插件
  • function、var、let 和 const 用于不同的声明场景
  • 【Linux进程】理解进程地址空间
  • 8.非监督学习与关系挖掘:聚类分析、客户细分、关联规则与协同过滤的全面解析——Python数据挖掘代码实践
  • 河南省汝州市建设门户网站/网站建设的步骤
  • 公司网站 域名/中国北京出啥大事了
  • 网站建设培训美女/网页搜索优化seo
  • 政府网站建设指标评价结果/微商营销
  • 温岭高端网站设计哪家好/网站seo诊断分析
  • 怎么做色情网站赚钱/微信营销的优势