react18加antd新手上路使用

第一次使用react和antd组件库,记录过程中实用的几个组件和使用方法;

项目中依赖版本
typescript 复制代码
"react": "^18.2.0",
"antd": "^5.3.0",
Input关闭历史填充
typescript 复制代码
 <Input placeholder="请输入ID/名称" allowClear autoComplete="off"/>  
Popover组件使用
typescript 复制代码
<Popover></Popover>
// 挂载到当前节点父节点
<Popover 
    getPopupContainer={(triggerNode: any) => triggerNode.parentNode}>
</Popover>
切换中文加日期插件汉化
typescript 复制代码
import { ConfigProvider } from 'antd';
import 'dayjs/locale/zh-cn';
import zhCN from 'antd/locale/zh_CN';
import 'moment/dist/locale/zh-cn';
import Router from '@/router/index';
function App() {
  return (
    <div className="App">
      <ConfigProvider theme={{ token: { colorPrimary: '#0078D7'} }} locale={zhCN}>
        <Router></Router>
      </ConfigProvider>
    </div>
  )
}
export default App
InputNumber只能输入整数
typescript 复制代码
<InputNumber min={0} max={100} precision={0} placeholder='请输入' style={{width: '100%'}}/>
From.List 赋值
typescript 复制代码
// 自定义校验
const checkImei = (_: any, value: string) => {
    if (!value) {
        return Promise.reject(new Error('1-20个字符,仅支持数字或字母!'));
    }
    const is = Reg.EN_NUM.test(value);
    if (is) {
        if (value.length > 12) {
            return Promise.reject(new Error('1-20个字符,仅支持数字或字母!'));
        } else {
            return Promise.resolve();
        }
    } else {
        return Promise.reject(new Error('1-20个字符,仅支持数字或字母!'));
    }
}
const checkImei = (_: any, value: string) => {
        if (!value) {
            return Promise.reject(new Error('1-20个字符,仅支持数字或字母!'));
        }
        const is = Reg.EN_NUM.test(value);
        if (is) {
            if (value.length > 12) {
                return Promise.reject(new Error('1-20个字符,仅支持数字或字母!'));
            } else {
                return Promise.resolve();
            }
        } else {
            return Promise.reject(new Error('1-20个字符,仅支持数字或字母!'));
        }
    }
<Form initialValues={{
    IMEIS: [{imei: 1}, {imei: 2}, {imei: 3}]
}}>
    <Form.List name="IMEIS">
        {(fields, { add, remove }) => (
        <>
            {fields.map(({ key, name, ...restField }, index) => (
                <div key={key}>
                    <Form.Item label={`IMEI${index + 1}`} {...restField} name={[name, 'imei']} 
                        rules={[{ required: true, validator: checkImei }]}>
                        <Input placeholder="请输入" allowClear/>
                    </Form.Item>
                </div>
            ))}
        </>
    )}
    </Form.List>
</Form>
表格预制高度
typescript 复制代码
<div className={style.table_wrap}>
    <Table columns={columns} 
        dataSource={data} 
        rowKey={record => record.id} 
        scroll={{ x: 50, y: '360px'  }} 
        pagination={false}>
    </Table>
</div>
:global{
    .ant-table-body{
        height: 360px;
    }
}
相关推荐
原则猫8 小时前
HOOKS 背后机制
前端
码语智行8 小时前
首页导航跳转功能深度解析-系统内和系统外
前端
阿猫的故乡9 小时前
Vue过渡动画从入门到装X:淡入淡出、滑动、列表动画、第三方库全搞定
前端·javascript·vue.js
IManiy9 小时前
总结之Vibe Coding前端骨架
前端
JS菌9 小时前
AI Agent 沙箱双层防护体系:从权限过滤到内核隔离的完整实现
前端·人工智能·后端
Aphasia3119 小时前
从输入URL到页面展示全流程
前端·面试
我叫黑大帅10 小时前
前端如何竖屏固定视口背景
前端·javascript·面试
abcy07121310 小时前
python pandas csv异步后台清洗前端优先返回成功信息
前端·python·pandas
IT_陈寒10 小时前
Vite这个坑我帮你踩了,动态导入居然这样才生效
前端·人工智能·后端
swipe10 小时前
Mem0 x Agent 实战系列:分层记忆 + 三路召回,搭建真正可用的长期记忆层
前端·javascript·面试