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

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

时间:2023-04-19 11:39:56浏览次数:39  
标签:React const 歌谣 ... res 前端 ts ant values

前言

我是歌谣 我有个兄弟 巅峰的时候排名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,歌谣,...,res,前端,ts,ant,values
From: https://blog.51cto.com/u_14476028/6206020

相关文章

  • 浅析ReentrantLock和AQS
          AQS的全称是AbstractQueuedSynchronizer,这是AQS框架的核心抽象类。ReentrantLock有三个内部类:Sync、NonfairSync、FairSync。FairSync代表了公平锁,NonfairSync代表了非公平锁,NonfairSync和FairSync都继承自Sync,Sync继承自AbstractQueuedSynchronizer。      AQ......
  • vue+ant中input输入框校验,不符合条件的输入无效
    1.只能输入数字/小数点/负号2.只能有一个负号,只能有一个小数点3.第一位不能直接输入小数点,输入负号后不能直接跟随小数点4.第一位输入为0时或-0时,只能跟随小数点,不能跟随数字例如01095.小数点后只能输入两位数字,不可输入其他,并且最后一位不能为0 6.因为是实时校验......
  • VB调用sql server 的数据转换服务(DTS)
    先在sqlserver的数据转换服务(DTS)中新建DTS包,保存为*.dts文件,VB中调用一下即可。    注:工程--引用---MicrosoftDTSPackage....选中。    -------------------------------------------------- PrivateSubRunPackage(ByValSAsString)'S......
  • 生信工具推荐之(2) datasets
    datasetsNCBI出品跨平台轻松批量从数据库中下载数据的命令行工具指南:工具处于快速更新迭代阶段,正逐步添加新功能,,参考网址:https://www.ncbi.nlm.nih.gov/datasets/docs/v1/how-tos/安装:curl-odatasets'https://ftp.ncbi.nlm.nih.gov/pub/datasets/command-line/v1/linux-am......
  • 如何在 vue3 中使用 jsx/tsx?
    我们都知道,通常情况下我们使用vue大多都是用的SFC(SignleFileComponent)单文件组件模式,即一个组件就是一个文件,但其实Vue也是支持使用JSX来编写组件的。这里不讨论SFC和JSX的好坏,这个仁者见仁智者见智。本篇文章旨在带领大家快速了解和使用Vue中的JSX语法,好......
  • 【五期邹昱夫】CCF-A(NeurIPS'19)Deep leakage from gradients.
    "Zhu,Ligeng,ZhijianLiu,andSongHan."Deepleakagefromgradients."Advancesinneuralinformationprocessingsystems32(2019)."  本文从公开共享的梯度中获得私有训练数据。首先随机生成一对“伪”输入和标签,然后执行正常的向前和向后操作。在从伪数据导出......
  • vue3+vite+ts搭建一个基于cesium的gis系统
    使用NPM:bash$npmcreatevite@latest使用Yarn:bash$yarncreatevite使用PNPM:bash$pnpmcreatevite附加的命令行选项#npm6.xnpmcreatevite@latestmy-vue-app--templatevue#npm7+,extradouble-dashisneeded:npmcreatevite@latestmy-vue-a......
  • 伟大思想论文:Cantor–Bernstein-Schröder 定理及其证明简介
    Cantor–Bernstein-Schröder定理及其证明简介1定理简介Cantor–Bernstein-Schröder定理,也称作Schröder–Bernstein定理、Cantor–Bernstein定理,是集合论中的重要定理。它的内容十分简单:如果集合\(A\)到集合\(B\)存在单射,且集合\(B\)到集合\(A\)存在单射,则集合......
  • HDLBits(16)4.18
    3电路3.2时序逻辑3.2.2计数器 Count1to10(Decadecounteragain)与上题一样,区别是复位为1moduletop_module(inputclk,inputreset,output[3:0]q);always@(posedgeclk)beginif(reset)q<=4'b0001......
  • Bootstrap 应用-实现组合式上导航栏+侧边导航栏的布局
    今天继续学习使用bootstrap制作我们的主页面,上手以后发现bootstrap模板真的非常好用,效率很高,比较方便快捷。今天是主要把侧边栏做出来了,同时主要学习的是网格系统,然后用它做出了如图的主页。效果展示: 代码示例:<!DOCTYPEhtml><htmllang="en"><head><title>图像表格化......