import React, { useState, useEffect } from 'react'; import { View, Text, Image, ScrollView, Button, Input, Textarea } from '@tarojs/components'; import Taro from '@tarojs/taro'; import './index.scss'; import GuideBar from '@/components/GuideBar'; import { UserInfo } from '@/components/UserInfo'; import { UserService } from '@/services/userService'; const EditProfilePage: React.FC = () => { // 用户信息状态 const [user_info, setUserInfo] = useState({ id: '1', nickname: '188的王晨', avatar: require('../../../static/userInfo/default_avatar.svg'), bio: '网球入坑两年,偏好双打,正手进攻型选手\n平时在张江、世纪公园附近活动,欢迎约球!\n不卷分数,但认真对待每一拍,每一场球都想打得开心。有时候也会带相机来拍点照片📸', location: '上海黄浦', occupation: '互联网从业者', ntrp_level: 'NTRP 4.0' }); // 表单状态 const [form_data, setFormData] = useState({ nickname: user_info.nickname, bio: user_info.bio, location: user_info.location, occupation: user_info.occupation, ntrp_level: user_info.ntrp_level, phone: '', // 新增手机号字段 gender: '' // 新增性别字段 }); // 页面加载时初始化数据 useEffect(() => { // 这里应该从store或API获取当前用户信息 // const currentUser = getUserInfo(); // setUserInfo(currentUser); // setFormData(currentUser); }, []); // 处理输入变化 const handle_input_change = (field: string, value: string) => { setFormData(prev => ({ ...prev, [field]: value })); }; // 处理头像上传 const handle_avatar_upload = () => { Taro.chooseImage({ count: 1, sizeType: ['compressed'], sourceType: ['album', 'camera'], success: async (res) => { const tempFilePath = res.tempFilePaths[0]; try { const avatar_url = await UserService.upload_avatar(tempFilePath); setUserInfo(prev => ({ ...prev, avatar: avatar_url })); Taro.showToast({ title: '头像上传成功', icon: 'success' }); } catch (error) { console.error('头像上传失败:', error); Taro.showToast({ title: '头像上传失败', icon: 'none' }); } } }); }; // 处理保存 const handle_save = async () => { // 验证表单 if (!form_data.nickname.trim()) { Taro.showToast({ title: '请输入昵称', icon: 'none' }); return; } try { await UserService.save_user_info(form_data); Taro.showToast({ title: '保存成功', icon: 'success' }); Taro.navigateBack(); } catch (error) { console.error('保存失败:', error); Taro.showToast({ title: '保存失败', icon: 'none' }); } }; // 处理返回 const handle_back = () => { Taro.navigateBack(); }; return ( {/* 主要内容 */} {/* 头部操作栏 */} 编辑资料 {/* 头像编辑区域 */} 点击更换头像 {/* 基本信息编辑 */} {/* 昵称 */} 昵称 handle_input_change('nickname', e.detail.value)} /> {/* 个人简介 */} 个人简介