前端项目实战38-查询都要单独形成一套组件-优秀呀
父组件
<Card> <SearchForm formList={formList} actions={actions} onSearch={onSearch} onClick={onAddMenu} showLabel={true} ></SearchForm> </Card>
子组件
import React, { memo } from 'react'; import { Button, Input, Form } from 'antd'; import { ButtonType } from 'antd/es/button/button'; import './index.less'; export interface SearchFormAction { name: string; type?: ButtonType; } export interface SearchFormItem { name: string; label: string; placeholder?: string; rules?: object[]; render?: React.ReactElement; } interface SearchFormProps { formList: SearchFormItem[]; onSearch: (values: any) => void; actions: SearchFormAction[]; onClick: (index: number) => void; showLabel?: boolean; } function SearchForm(props: SearchFormProps) { const [form] = Form.useForm(); const reset = () => { form.resetFields(); props.onSearch({}); }; const onSearch = () => { form.validateFields().then(res => { props.onSearch(res); }); }; return ( <Form className="layout__search" form={form} layout="inline" onFinish={onSearch}> {props.formList.map((item: SearchFormItem) => ( <Form.Item label={props.showLabel !== false && item.label ? item.label : ''} key={item.name} name={item.name} rules={item.rules} > {item.render ? item.render : <Input placeholder={item.placeholder} />} </Form.Item> ))} <Form.Item> <Button htmlType="submit">查询</Button> </Form.Item> <Form.Item> <Button htmlType="reset" onClick={reset}> 重置 </Button> </Form.Item> {props.actions.map((action: SearchFormAction, index: number) => ( <Form.Item key={action.name}> <Button type={action.type} onClick={() => props.onClick(index)}> {action.name} </Button> </Form.Item> ))} </Form> ); } export default memo(SearchForm);
分类:
前端学习-项目work-
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!