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

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

前言

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


需求分析

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


功能思维


image.png

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


弹出框部分设计


<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>



相关文章
|
前端开发 JavaScript
React项目路由懒加载lazy、Suspense,使第一次打开项目页面变快
本文介绍了在React项目中实现路由懒加载的方法,使用React提供的`lazy`和`Suspense`来优化项目首次加载的速度。通过将路由组件改为懒加载的方式,可以显著减少初始包的大小,从而加快首次加载速度。文章还展示了如何使用`Suspense`组件包裹`Switch`来实现懒加载过程中的fallback效果,并提供了使用前后的加载时间对比,说明了懒加载对性能的提升作用。
1086 2
React项目路由懒加载lazy、Suspense,使第一次打开项目页面变快
|
9月前
|
编解码 前端开发 JavaScript
js react antd 实现页面低分变率和高分变率下字体大小自适用,主要是配置antd
在React中结合Ant Design与媒体查询,通过less变量和响应式断点动态调整`@font-size-base`,实现多分辨率下字体自适应,提升跨设备体验。
455 2
|
前端开发 JavaScript
除了使用Route组件,React Router还有其他方式处理404错误页面吗
除了使用Route组件,React Router还有其他方式处理404错误页面吗
537 58
|
前端开发
如何在React Router中定义404错误页面组件?
如何在React Router中定义404错误页面组件?
462 57
|
前端开发 UED
在React Router中,如何处理路由的404错误页面?
在React Router中,如何处理路由的404错误页面?
445 57
|
移动开发 前端开发 JavaScript
React DnD:实现拖拽功能的终极方案?
本文首发于微信公众号“前端徐徐”,介绍了一个强大的 React 拖拽库——React DnD。React DnD 帮助开发者轻松创建复杂的拖拽界面,适用于 Trello 风格的应用、列表重排序、可拖拽的 UI 组件等场景。文章详细介绍了 React DnD 的基本信息、主要特点、使用场景及快速上手指南。
1771 3
React DnD:实现拖拽功能的终极方案?
|
前端开发 JavaScript UED
react或者vue更改用户所属组,将页面所有数据进行替换(解决问题思路)____一个按钮使得页面所有接口重新请求
在React或Vue中,若需在更改用户所属组后更新页面所有数据但不刷新整个页面,可以通过改变路由出口的key值来实现。在用户切换组成功后,更新key值,这会触发React或Vue重新渲染路由出口下的所有组件,从而请求新的数据。这种方法避免了使用`window.location.reload()`导致的页面闪烁,提供了更流畅的用户体验。
269 1
react或者vue更改用户所属组,将页面所有数据进行替换(解决问题思路)____一个按钮使得页面所有接口重新请求
|
移动开发 前端开发
react项目配合diff实现文件对比差异功能
在React项目中,可以使用`diff`库实现文件内容对比差异功能。首先安装`diff`库,然后在组件中引入并使用`Diff.diffChars`或`Diff.diffLines`方法比较文本差异。通过循环遍历`diff`结果,可以生成不同样式的HTML元素来高亮显示文本差异。
913 1
react项目配合diff实现文件对比差异功能
|
前端开发
React添加路径别名alias、接受props默认值、并二次封装antd中Modal组件与使用
本文介绍了在React项目中如何添加路径别名alias以简化模块引入路径,设置组件props的默认值,以及如何二次封装Ant Design的Modal组件。文章还提供了具体的代码示例,包括配置Webpack的alias、设置defaultProps以及封装Modal组件的步骤和方法。
433 1
React添加路径别名alias、接受props默认值、并二次封装antd中Modal组件与使用
|
前端开发
react 封装防抖
react 封装防抖
181 4