首页 > 其他分享 >React+hook+ts+ant design封装一个具有编辑和新增功能的页面

React+hook+ts+ant design封装一个具有编辑和新增功能的页面

时间:2022-10-06 20:31:35浏览次数:50  
标签:React const 歌谣 ... menu ts ant onOk name

前言

我是歌谣 我有个兄弟 巅峰的时候排名c站总榜19 叫前端小歌谣 曾经我花了三年的时间创作了他 现在我要用五年的时间超越他 今天又是接近兄弟的一天人生难免坎坷 大不了从头再来 歌谣的意志是永恒的 放弃很容易 但是坚持一定很酷 微信公众号前端小歌谣

需求分析

在前端项目中 最常见的就是做一个页面的新增和编辑 通常一个页面就能够搞定

功能思维

React+hook+ts+ant design封装一个具有编辑和新增功能的页面_数据

这边的话需要做出一个弹出框的一个模式

弹出框部分设计

<Modal
maskClosable={false}
visible={visible}
title={`${menu && menu.id ? '编辑' : '新增'}`}
onCancel={props.onClose}
onOk={onOk}
>
//此处省略页面内容

</Modal>

编辑和新增

const onOk = useCallback(() => {
form.validateFields().then(res => {
const values = res as AddOrEditMenuFormProps;
const info: Menu = {
...menu,
...values,
};
if (info.id) {
此处省略编辑逻辑接口
} else {
此处省略新增逻辑接口
}
});
}, []);

由于用ant design Form组件所以回显的数据通过父组件获得`

form.validateFields().then(res => {}
const values = res as AddOrEditMenuFormProps;
const info: Menu = {
...menu,
...values,
};

render部分

<Modal
maskClosable={false}
visible={visible}
title={`${menu && menu.id ? '编辑' : '新增'}`}
onCancel={props.onClose}
onOk={onOk}
>
<Form
name="menu"
form={form}
initialValues={menu || {}}
labelCol={{
sm: { span: 5 },
}}
wrapperCol={{
sm: { span: 16 },
}}
>
<Form.Item
label="工种名称"
name="name"
rules={[{ required: true, message: '请输入工种名称' }]}
>
<Input placeholder="请输入工种名称"/>
</Form.Item>
<Form.Item
label="设备类型"
name="deviceTypeId"
rules={[
{
required: true,
message: "请输入设备类型",
},
]}>
<Select

</Select>
</Form.Item>
</Form>
</Modal>

总结

我是歌谣 放弃很容易 坚持一定很酷 关注前端小歌谣带你进入前端巅峰交流群

标签:React,const,歌谣,...,menu,ts,ant,onOk,name
From: https://blog.51cto.com/u_14476028/5734013

相关文章

  • 我的CMakeLists.txt模板
    我的CMakeLists.txt模板,适用于windowsSDK风格的程序,不考虑测试和安装问题.rc资源文件部分,适用windows项目。#####################################################......
  • 尺度不变人脸检测器(S3FD-Single Shot Scale-invariant Face Detector)
    今天讲尺度不变人脸检测前之前,我想讲解下一位热心研究者的问题,可以简单讲解下,希望也可以帮助其他读者,谢谢!这样的人脸尺度怎么去实现的,其实很简单,如果你有详细读过Spatialpy......
  • Pyecharts基本图的使用
    概况:Echarts是一个由百度开源的数据可视化,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可。而Python是一门富有表达力的语言,很适合用于数据处理。当数据分析......
  • Python requests乱码的五种解决办法
    https://blog.csdn.net/lilongsy/article/details/122140098importrequestsres=requests.get("https://www.baidu.com/")res.encoding=res.apparent_encodingpri......
  • vue3的Async Components异步组件
    前言:当我们的项目达到一定的规模时,对于某些组件来说,我们并不希望一开始全部加载,而是需要的时候进行加载;这样的做得目的可以很好的提高用户体验。传统方式引入组件如下,这......
  • 备战2021:vue3+ts开发指南
    Vue3+Typescript开发指南为什么要使用Ts应不应该使用TS开发Vue3是当前的热门话题,大家主要纠结成本和收益之间的取舍。什么是TypeScript官网:构建于JavaScript,增加了静态类......
  • CF895C Square Subsets
    CF895CSquareSubsets注意到平方数要求每个质因数的幂次均为偶数。由于\(70\)以内仅有\(19\)个质因数,考虑将每个\(a_i\)按照每个质因数的奇偶性分解为\(01\)串......
  • 1738C-Even Number Addicts - dp, games, greedy
      voidsolve(){intn;cin>>n;intodd=0,even=0;for(inti=0;i<n;i++){inta;cin>>a;if(a&1)odd++;elseeven+......
  • Subsets of Array
    寻找一组数组中不重复元素的子集packagecom.example.mathematicaldemo.demo;importlombok.extern.slf4j.Slf4j;/***资料:*https://easylearn.baidu.com/edu-......
  • ts+vite3+vue3+mock+qs实现本地模拟数据功能
    第一步:安装qs因为项目中用到了ts,所以还需要安装:第二步:安装mock第三步:创建Vue页面:Category.vue<template><button@click="getById">getById</button><button......