封装Layout

使用 props.children 使组件能插入子组件

  1. import React from "react";
  2. import styles from "./MainLayout.module.css";
  3. import { Header, Footer } from "../../components";
  4. export const MainLayout: React.FC = ({ children }) => {
  5. return (
  6. <>
  7. <Header />
  8. {/* 页面内容 content */}
  9. <div className={styles["page-content"]}>{children}</div>
  10. <Footer />
  11. </>
  12. );
  13. };

antd 表单验证

官方文档

  1. <Form.Item
  2. label="Confirm Password"
  3. name="confirm"
  4. hasFeedback
  5. rules={[
  6. { required: true, message: "Please input your confirm password!" },
  7. ({ getFieldValue }) => ({
  8. validator(_, value) {
  9. if (!value || getFieldValue("password") === value) {
  10. return Promise.resolve();
  11. }
  12. return Promise.reject("密码确认不一致!");
  13. },
  14. }),
  15. ]}
  16. >
  17. <Input.Password />
  18. </Form.Item>

注册请求

  1. export const RegisterForm = () => {
  2. const navigate = useNavigate()
  3. const onFinish = async (values: any) => {
  4. try {
  5. // 状态204 无返回值
  6. await axios.post('/auth/register', {
  7. username: values.username,
  8. password: values.password,
  9. confirmPassword: values.confirm
  10. })
  11. // 请求成功后跳转登录页面
  12. navigate('/signIn')
  13. } catch(e) {
  14. alert("注册失败")
  15. }
  16. };
  17. // ...
  18. }