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

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

时间:2023-04-21 21:32:57浏览次数:37  
标签: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/6211978

相关文章

  • [ARC138D] Differ by K bits 题解
    小清新构造题。首先\(K=1\)的情况是trival的,直接格雷码即可。对于\(K>1\),我们发现题目的约束相当于\(\operatorname{popcount}(P_i\oplusP_{(i+1)\bmod2^N})=K\),考虑\(P_i\)的差分序列\(D_i\),那么\(D_i\)一定是一个恰好有\(K\)位\(1\)的二进制数,记\(S=\{i\mid......
  • 部署Spring Boot + React前后端分离中的奇特发现
    今天在尝试在服务器上部署SpringBoot+React前后端分离应用时有一个奇特的发现。服务器首先是前端npmrunbuild之后,将构建好的应用移动到/var/www/html文件夹,nginx启动可以正常访问,axios接口访问地址为localhost:8080;后端maven构建并运行。本地电脑同样开始运行前后端。......
  • Vite + Vue3 +TS 项目搭建
    安装nvm略安装node略使用Vite创建项目vite3.x文档:https://cn.vitejs.dev/guide/#scaffolding-your-first-vite-project使用NPM:$npmcreatevite@latest使用Yarn:$yarncreatevite使用PNPM:$pnpmcreatevite然后直接进入项目初始化的选择,自定义一些......
  • JDBC--API --ResultSet
        importjava.sql.*;publicclassjdbcdome_ResultSet{publicstaticvoidmain(String[]args)throwsClassNotFoundException,SQLException{Class.forName("com.mysql.jdbc.Driver");Stringurl="jdbc:mysql://127.0.......
  • 使用PhantomJS解决VUE项目无法被百度收录
    一、安装PhantomJS安装文章:https://www.cnblogs.com/robots2/p/17340143.html二、编写脚本spider.js//spider.js'usestrict';console.log('=====start=====');//单个资源等待时间,避免资源加载后还需要加载其他资源varresourceWait=500;varresourceWaitTimer;/......
  • ReactNative 打包发布 Android 应用
    一、创建应用签名1、在AndroidStudio菜单栏中,依次点击Build >GenerateSignedBundle/APK 2、在Generate SignedBundleorAPK对话框中,选择APK,点击Next按钮 3、在Keystorepath字段下,点击Createnew按钮 4、在NewKeyStore窗口中,点击右侧文件......
  • ts
    第一章、定义变量指定类型就在给这个变量赋值能赋值指定类型的值//1.声明变量,letdName:string='泰嘉'console.log(dName);//dName=11//这里报错说这个number类型不能赋值给string第二章、数据类型//1.字符类型``''letddName:string='貂蝉'console.......
  • synchronized关键字、ReentrantLock
    synchronized是Java中的一个关键字,同步,主要解决的是多个线程之间访问资源的同步性,可以保证被它修饰的方法或者代码块在任意时刻只能有一个线程执行。在Java早期版本中,synchronized属于重量级锁,效率低下。这是因为监视器锁(monitor)是依赖于底层的操作系统的Mutex......
  • react 生命周期钩子函数
    1、挂载:construct、getDerivedStateFromProps、render、componentDidMounted2、更新:getDerivedStateFromProps、componentWillUpdate、render、getSnapshotBeforeUpdate、componentDidUpdated3、卸载:componentWillUnmounted4、请求放在componentDidMount里react生命周期图:h......
  • react ref
    一、使用ref操作DOM1、要访问由React管理的DOM节点,首先,引入useRefHook:import{useRef}from'react';2、然后,在你的组件中使用它声明一个ref:constmyRef=useRef(null);3、最后,将其作为ref属性传给DOM节点:<divref={myRef}>总结:useRefHook......