import { Text, Box, Heading, Image, Center, Button, Flex, VStack, Divider, useToast, FormControl, FormLabel, FormHelperText, Input, FormErrorMessage, HStack, Wrap, useMediaQuery, Avatar, Textarea, } from "@chakra-ui/react" import Card from "components/card" import Nav from "layouts/nav/nav" import PageContainer from "layouts/page-container" import Sidebar from "layouts/sidebar/sidebar" import React, { useEffect, useState } from "react" import { adminLinks, settingLinks } from "src/data/links" import { requestApi } from "utils/axios/request" import { useRouter } from "next/router" import { Field, Form, Formik } from "formik" import { config } from "configs/config" import Tags from "components/tags/tags" import { validateNickname ,validateEmail,validateUrl} from "utils/user" const UserProfilePage = () => { const [user, setUser] = useState(null) const [skills, setSkills] = useState([]) const [isLargerThan1280] = useMediaQuery("(min-width: 768px)") useEffect(() => { requestApi.get("/user/self").then(res => setUser(res.data)) }, []) const router = useRouter() const toast = useToast() const submitUser = async (values, _) => { await requestApi.post(`/user/update`, values) setUser(values) toast({ description: "更新成功", status: "success", duration: 2000, isClosable: true, }) } function validateLen(value) { let error if (value?.length > config.commonMaxlen) { error = `长度不能超过${config.commonMaxlen}` } return error } const Layout = isLargerThan1280 ? HStack : VStack return ( <> {user && {(props) => (
基本信息 ID Username {({ field, form }) => ( 用户昵称 {form.errors.nickname} )} validateEmail(v,false)}> {({ field, form }) => ( 邮箱地址 {form.errors.email} )} validateUrl(v, false)}> {({ field, form }) => ( 头像设置 {form.errors.avatar} {user.avatar && } )} validateUrl(v, true)}> {({ field, form }) => ( 封面图片 {form.errors.cover} {user.cover && } )} About You {({ field, form }) => ( 一句话描述自己 {form.errors.tagline} )} {({ field, form }) => ( Location {form.errors.location} )} {({ field, form }) => ( Available for