import { Form, Typography, Input, Button, Space, Avatar, Upload, Message, Select, } from '@arco-design/web-react'; import { FormInstance } from '@arco-design/web-react/es/Form'; import { IconCamera, IconPlus } from '@arco-design/web-react/icon'; import axios from 'axios'; import React, { useEffect, useRef, useState } from 'react'; import { useSelector } from 'react-redux'; import { ReducerState } from '../../redux'; import useLocale from '../../utils/useLocale'; import styles from './style/index.module.less'; export default function Info() { const locale = useLocale(); const userInfo = useSelector((state: ReducerState) => state.global.userInfo); const formRef = useRef(); const [loading, setLoading] = useState(false); const [avatar, setAvatar] = useState(''); function save(params) { setLoading(true); axios .post('/api/user/saveInfo', { data: params }) .then(() => { Message.success(locale['userSetting.saveSuccess']); }) .finally(() => { setLoading(false); }); } function onSaveBtnClick() { formRef.current.validate().then((values) => { save({ ...values, avatar, }); }); } function onCancelBtnClick() { setInitialValue(userInfo); } function setInitialValue(values) { if (values) { setAvatar(values.avatar); formRef.current.setFieldsValue({ ...values, avatar: [ { uid: 1, url: values.avatar, }, ], }); } } useEffect(() => { if (userInfo) { setAvatar(userInfo.avatar); setInitialValue(userInfo); } }, [userInfo]); function onAvatarChange(_, file) { setAvatar(file.originFile ? URL.createObjectURL(file.originFile) : ''); } return (
{locale['userSetting.title.basicInfo']} } className={styles['info-avatar']}> {avatar ? : } {locale['userSetting.title.socialInfo']}
); }