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>



相关文章
|
1月前
|
移动开发 前端开发 JavaScript
React DnD:实现拖拽功能的终极方案?
本文首发于微信公众号“前端徐徐”,介绍了一个强大的 React 拖拽库——React DnD。React DnD 帮助开发者轻松创建复杂的拖拽界面,适用于 Trello 风格的应用、列表重排序、可拖拽的 UI 组件等场景。文章详细介绍了 React DnD 的基本信息、主要特点、使用场景及快速上手指南。
74 3
React DnD:实现拖拽功能的终极方案?
|
2月前
|
移动开发 前端开发
react项目配合diff实现文件对比差异功能
在React项目中,可以使用`diff`库实现文件内容对比差异功能。首先安装`diff`库,然后在组件中引入并使用`Diff.diffChars`或`Diff.diffLines`方法比较文本差异。通过循环遍历`diff`结果,可以生成不同样式的HTML元素来高亮显示文本差异。
125 1
react项目配合diff实现文件对比差异功能
|
2月前
|
资源调度 JavaScript 前端开发
使用vite+react+ts+Ant Design开发后台管理项目(二)
使用vite+react+ts+Ant Design开发后台管理项目(二)
|
2月前
|
前端开发
React 中购物车功能实现(全选多选功能实现)
React 中购物车功能实现(全选多选功能实现)
39 2
|
2月前
|
存储 移动开发 前端开发
初探react,用react实现一个todoList功能
该文章通过创建一个TodoList应用来介绍React的基础知识,包括环境搭建、组件创建、状态管理和事件处理,并演示了如何使用React Hooks来优化组件逻辑。
|
3月前
|
前端开发
|
3月前
|
存储 JavaScript 前端开发
探索React状态管理:Redux的严格与功能、MobX的简洁与直观、Context API的原生与易用——详细对比及应用案例分析
【8月更文挑战第31天】在React开发中,状态管理对于构建大型应用至关重要。本文将探讨三种主流状态管理方案:Redux、MobX和Context API。Redux采用单一存储模型,提供预测性状态更新;MobX利用装饰器语法,使状态修改更直观;Context API则允许跨组件状态共享,无需第三方库。每种方案各具特色,适用于不同场景,选择合适的工具能让React应用更加高效有序。
86 0
|
6月前
|
存储 前端开发 JavaScript
【亮剑】在React中,处理`onScroll`事件可实现复杂功能如无限滚动和视差效果
【4月更文挑战第30天】在React中,处理`onScroll`事件可实现复杂功能如无限滚动和视差效果。类组件和函数组件都能使用`onScroll`,通过`componentDidMount`和`componentWillUnmount`或`useEffect`添加和移除事件监听器。性能优化需注意节流、防抖、虚拟滚动、避免同步计算和及时移除监听器。实战案例展示了如何用Intersection Observer和`onScroll`实现无限滚动列表,当最后一项进入视口时加载更多内容。合理利用滚动事件能提升用户体验,同时要注意性能优化。
468 0
|
6月前
|
前端开发
react使用ant desgin 组件实现便利开发
react使用ant desgin 组件实现便利开发
|
18天前
|
前端开发 JavaScript 开发者
颠覆传统:React框架如何引领前端开发的革命性变革
【10月更文挑战第32天】本文以问答形式探讨了React框架的特性和应用。React是一款由Facebook推出的JavaScript库,以其虚拟DOM机制和组件化设计,成为构建高性能单页面应用的理想选择。文章介绍了如何开始一个React项目、组件化思想的体现、性能优化方法、表单处理及路由实现等内容,帮助开发者更好地理解和使用React。
50 9
下一篇
无影云桌面