引入

  1. yarn add antd

使用

  1. // Index.js
  2. import 'antd/dist/antd.css';
  3. // Child.js
  4. import {Button} from 'antd'
  5. const Component = ()=>{
  6. return <Button>你好</Button>
  7. }
  8. export default Component

form 表单

  1. // Index.js
  2. import 'antd/dist/antd.css';
  3. // Child.js
  4. import {Button, Form, Input} from 'antd'
  5. const layout = {
  6. labelCol: {span: 4},
  7. wrapperCol: {span: 16},
  8. }
  9. const tailLayout = {
  10. wrapperCol: {offset: 4, span: 16}, // offest/偏移 span/大小
  11. }
  12. const Component = observer(()=> {
  13. const onFinish = (values) => {
  14. console.log('Success:', values)
  15. }
  16. const onFinishFailed = (errorInfo) => {
  17. console.log('Failed:', errorInfo)
  18. }
  19. return (
  20. <>
  21. <h1>注册</h1>
  22. <Form {...layout} // 布局样式
  23. name="basic"
  24. onFinish={onFinish}
  25. onFinishFailed={onFinishFailed}
  26. >
  27. <Form.Item // 用户名
  28. label="用户名"
  29. name="username"
  30. rules={[{required: true, message: '输入用户名'}]}
  31. >
  32. <Input/>
  33. </Form.Item>
  34. <Form.Item // 密码
  35. label="密码"
  36. name="password"
  37. rules={[{required: true, message: '输入密码'}]}
  38. >
  39. <Input.Password/>
  40. </Form.Item>
  41. <Form.Item // 确认密码
  42. label="确认密码"
  43. name="confirmPassword"
  44. rules={[{required: true, message: '确认密码'}]}
  45. >
  46. <Input.Password/>
  47. </Form.Item>
  48. <Form.Item {...tailLayout}> // 提交
  49. <Button type="primary" htmlType="submit">
  50. 提交
  51. </Button>
  52. </Form.Item>
  53. </Form>
  54. </>
  55. );
  56. })
  57. export default Component;

规则

验证用户名

语法

  • rules={[ {validator: validatorUsername} ]}
  • validatorUsername = (rule, value) => {} ```javascript const validatorUsername = (rule, value) => { if (/\W/.test(value)) {return Promise.reject(‘只能是数字字母下划线’)} if (value.length < 4 || value.length > 10) {return Promise.reject(‘长度为4~10个字符’)} return Promise.resolve() }

  1. <a name="EJGLs"></a>
  2. ### 验证密码
  3. ```javascript
  4. <Form.Item
  5. rules = {[
  6. {required: true, message: '输入密码'},
  7. {min: 6, message: '最小长度6个字符'}
  8. ]}
  9. >
  10. </Form.Item>

验证确认密码

语法

  • rules={[ validateConfirm ]}
  • const validateConfirm = ( {getFieldValue} ) => ({ validator(rule, value) {} }) ```javascript const validateConfirm = ({getFieldValue}) => ({ // 获取字段值 {getFieldValue} validator(rule, value) { if (getFieldValue(‘password’) === value) {return Promise.resolve()} // 获取 passwors return Promise.reject(‘两次密码不一致’) } })

  1. <a name="xQNvm"></a>
  2. # Upload 上传
  3. ```javascript
  4. import {Upload} from 'antd'
  5. import {InboxOutlined} from '@ant-design/icons'
  6. const props = {
  7. beforeUpload: file => { return false } // 手动上传 file:当前文件
  8. }
  9. return (
  10. <Dragger {...props}>
  11. <p className="ant-upload-drag-icon">
  12. <InboxOutlined/>
  13. </p>
  14. <p className="ant-upload-text">单击或拖动文件到此区域以上传</p>
  15. <p className="ant-upload-hint">
  16. 支持单次或批量上传
  17. </p>
  18. </Dragger>
  19. )

Message 全局提示

  1. import {message} from 'antd'
  2. const warning = () => {
  3. message.warning('This is a warning message');
  4. };