3D個人簡歷網站 7.聯系我

3D個人簡歷網站 7.聯系我

修改Contact.jsx

// 從 react 庫導入 useRef 和 useState hooks
import { useRef, useState } from "react";/*** Contact 組件,用于展示聯系表單,處理用戶表單輸入和提交。* @returns {JSX.Element} 包含聯系表單的 JSX 元素*/
const Contact = () => {// 創建一個 ref 對象,用于引用表單元素,方便后續操作const formRef = useRef();// 使用 useState hook 管理表單數據,初始值為包含姓名、郵箱和消息的空對象const [form, setForm] = useState({ name: "", email: "", message: "" });// 使用 useState hook 管理表單提交時的加載狀態,初始值為未加載const [loading, setLoading] = useState(false);/*** 處理表單輸入框內容變化的函數,更新表單數據。* @param {Object} e - 事件對象* @param {Object} e.target - 觸發事件的目標輸入框元素* @param {string} e.target.name - 輸入框的名稱* @param {string} e.target.value - 輸入框的當前值*/const handleChange = ({ target: { name, value } }) => {// 擴展原有表單數據,更新當前輸入框對應的字段值setForm({ ...form, [name]: value });};/*** 處理表單提交的函數,模擬提交操作。* @param {Object} e - 事件對象*/const handleSubmit = (e) => {// 阻止表單默認提交行為,避免頁面刷新e.preventDefault();// 設置加載狀態為 true,顯示加載提示setLoading(true);// 模擬提交操作,這里可以添加實際的提交邏輯setTimeout(() => {// 打印表單數據到控制臺console.log("表單已提交:", form);// 設置加載狀態為 false,隱藏加載提示setLoading(false);// 重置表單數據setForm({ name: "", email: "", message: "" });}, 1000);};return (// 外層容器,使用相對定位,根據屏幕尺寸調整布局<section className='relative flex flex-col max-container'>{/* 表單容器,使用彈性布局 */}<div className='flex flex-col'>{/* 頁面標題 */}<h1 className='head-text'>聯系我</h1>{/* 表單元素,使用 ref 引用,綁定提交事件處理函數 */}<formref={formRef}onSubmit={handleSubmit}className='w-full flex flex-col gap-7 mt-14'>{/* 姓名輸入框標簽 */}<label className='text-black-500 font-semibold'>姓名{/* 姓名輸入框,設置類型、名稱、樣式、占位符等屬性,綁定值和輸入變化事件 */}<inputtype='text'name='name'className='input'placeholder='張三'requiredvalue={form.name}onChange={handleChange}/></label>{/* 郵箱輸入框標簽 */}<label className='text-black-500 font-semibold'>郵箱{/* 郵箱輸入框,設置類型、名稱、樣式、占位符等屬性,綁定值和輸入變化事件 */}<inputtype='email'name='email'className='input'placeholder='zhangsan@example.com'requiredvalue={form.email}onChange={handleChange}/></label>{/* 消息輸入框標簽 */}<label className='text-black-500 font-semibold'>您的留言{/* 消息輸入框,設置名稱、行數、樣式、占位符等屬性,綁定值和輸入變化事件 */}<textareaname='message'rows='4'className='textarea'placeholder='請在此寫下您的想法...'value={form.message}onChange={handleChange}/></label>{/* 提交按鈕,根據加載狀態禁用按鈕并顯示不同文本 */}<buttontype='submit'disabled={loading}className='btn'>{loading ? "發送中..." : "提交"}</button></form></div></section>);
};// 導出 Contact 組件,供其他文件使用
export default Contact;

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/84247.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/84247.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/84247.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

AI大模型從0到1記錄學習numpy pandas day25

第 3 章 Pandas 3.1 什么是Pandas Pandas 是一個開源的數據分析和數據處理庫&#xff0c;它是基于 Python 編程語言的。 Pandas 提供了易于使用的數據結構和數據分析工具&#xff0c;特別適用于處理結構化數據&#xff0c;如表格型數據&#xff08;類似于Excel表格&#xff09;…

一些可以優化JavaScript性能的工具或庫匯總

在 JavaScript 性能優化方面,有許多實用的工具和庫可以幫助你分析、監控和提升代碼性能。以下是一些常用的工具和庫分類整理: 一、性能分析工具 這些工具用于診斷性能瓶頸,定位問題代碼。 Chrome DevTools Performance 面板:分析運行時性能,記錄函數執行時間、內存使用、…

Linux | tmux | 無法復制粘貼

問題&#xff1a;在Linux中使用tmux時&#xff0c;總是沒法使用復制粘貼功能&#xff1b; 解決: 如果希望直接用鼠標選擇并復制&#xff08;類似普通終端&#xff09;&#xff0c;可以&#xff1a; 在 ~/.tmux.conf 中添加&#xff1a;sh set -g mouse on;重新加載 tmux 配置…

行賄罪案件(公安偵查階段)詢問筆錄發問提綱

一、基本情況核實 與行賄對象&#xff08;受賄人&#xff09;的關系&#xff1f;何時通過何種方式認識&#xff1f;日常交往頻率及主要內容&#xff1f; 是否具備國家工作人員身份或其他特定主體資格&#xff1f;是否屬于被追訴單位的直接責任人員&#xff1f; 二、行賄動機與…

活到老學到老-Spring參數校驗注解Validated /Valid

通過 Validated 和 Valid可以對請求的進行參數校驗。 1.核心對比&#xff1a; 特性Valid (JSR-303)Validated (Spring)來源Java標準規范Spring框架擴展分組校驗不支持支持&#xff08;通過groups屬性&#xff09;嵌套路徑自動處理級聯校驗需配合Valid生效應用范圍方法參數、屬…

【筆記】JetBrains 數據遷移與符號鏈接操作

數據遷移與符號鏈接操作 一、備份原始數據 使用 robocopy 命令備份 C 盤中的源文件夾&#xff0c;確保原始數據完整備份。 robocopy "C:\Users\love\AppData\Local\JetBrains" "E:\Downloads\Other\JetBrains" /E確保備份路徑足夠存儲空間。 二、復制文…

使用 Terraform 創建 Azure Databricks 工作區

使用 Terraform 創建 Azure Databricks Terraform 是一種基礎設施即代碼(IaC)工具,允許用戶通過聲明式配置文件來管理和部署云資源。Azure Databricks 是一個基于 Apache Spark 的分析平臺,專為數據工程和數據科學設計。通過 Terraform,可以自動化 Azure Databricks 的創…

【zookeeper】--部署3.6.3

文章目錄 下載解壓創建data和logs配置文件1)創建目錄并且編輯 zoo.cfg2)接下來將 node01 的 ZooKeeper 所有文件拷貝至 node02 和 node03。推薦從 node02 和 node03 拷貝4&#xff09;最后 vim /etc/profile 配置環境變量&#xff0c;環境搭建結束。配完環境變量后 source /etc…

RxJS 核心操作符詳細用法示例

1. Observable 詳細用法 Observable 是 RxJS 的核心概念&#xff0c;代表一個可觀察的數據流。 創建和訂閱 Observable import { Observable } from "rxjs";// 1. 創建Observable const myObservable new Observable(subscriber > {// 發出三個值subscriber.n…

QGrphicsScen畫布網格和QGrphicsItem對齊到網格

#include <QGraphicsScene> #include <QPainter> #include <QWheelEvent> #include <QGraphicsView> class MyGraphicsView : public QGraphicsView { public:MyGraphicsView(QGraphicsScene* scene) : QGraphicsView(scene){}protected:// 重寫滾輪事…

深入解析自然語言處理中的語言轉換方法

在數字化浪潮席卷全球的今天&#xff0c;自然語言處理&#xff08;Natural Language Processing&#xff0c;NLP&#xff09;作為人工智能領域的核心技術之一&#xff0c;正深刻地改變著我們與機器交互的方式。其中&#xff0c;語言轉換方法更是 NLP 的關鍵組成部分&#xff0c…

VRRP虛擬路由器協議的基本概述

目錄 vrrp是什么&#xff1f; VRRP的一些概念與專有名詞 VRRP的Master選舉規則&#xff1a; 尾聲 vrrp是什么&#xff1f; vrrp全名virtual router redundance protocol&#xff0c;虛擬路由器冗余協議 VRRP的一些概念與專有名詞 1&#xff09;VRRP設備&#xff1a;運行VRRP…

數據結構 -- 交換排序(冒泡排序和快速排序)

冒泡排序 基于“交換”的排序&#xff1a;根據序列中兩個元素關鍵字的比較結果來對換這兩個記錄在序列中的位置 //交換 void swap(int &a,int &b){int temp a;a b;b temp; }//冒泡排序 void BubbleSort(int A[],int n){for(int i0;i<n-1;i){bool flag false; …

多模態AI終極形態?GPT-5與Stable Diffusion 3的融合實驗報告

多模態AI終極形態&#xff1f;GPT-5與Stable Diffusion 3的融合實驗報告 系統化學習人工智能網站&#xff08;收藏&#xff09;&#xff1a;https://www.captainbed.cn/flu 文章目錄 多模態AI終極形態&#xff1f;GPT-5與Stable Diffusion 3的融合實驗報告摘要引言技術架構對…

ajax中get和post的區別,datatype返回的數據類型有哪些?

GET 請求 和 POST 請求 是 HTTP 協議中常用的兩種請求方法&#xff0c;它們主要的區別在于&#xff1a; GET 請求&#xff1a; 數據傳輸方式&#xff1a;數據通過 URL 傳遞&#xff0c;通常是附加在 URL 后面的查詢字符串中&#xff0c;例如 https://example.com/page?nameJoh…

101 alpha_59

(0 - (1 * (rank((sum(returns, 10) / sum(sum(returns, 2), 3))) * rank((returns * cap))))) 0 - (1 * A * B) A rank((sum(returns, 10) / sum(sum(returns, 2), 3)))B rank((returns * cap)) sum(returns, 10)&#xff1a;計算過去 10 期收益率的總和sum(returns, 2)&…

vscode里幾種程序調試配置

標題調試python嵌入的c代碼,例如 import torch from torch.utils.cpp_extension import loadtest_load load(nametest_load, sources[test.cpp],extra_cflags[-O0, -g],#extra_cflags[-O1],verboseTrue, ) a torch.tensor([1, 2, 3]) b torch.tensor([4, 5, 6]) result te…

深入解析MySQL中的HAVING關鍵字:從入門到實戰

引言 在SQL查詢中&#xff0c;數據過濾是核心操作之一。我們常用WHERE子句進行行級過濾&#xff0c;但當需要對分組后的結果進行條件篩選時&#xff0c;HAVING關鍵字便成為不可或缺的工具。本文將深入探討HAVING的作用、使用場景及其與WHERE的區別&#xff0c;并通過實際案例幫…

根據YOLO數據集標簽計算檢測框內目標面積占比(YOLO7-10都適用)

程序&#xff1a; 路徑改成自己的&#xff0c;閾值可以修改也可以默認 #zhouzhichao #25年5月17日 #計算時頻圖中信號面積占檢測框面積的比值import os import numpy as np import pandas as pd from PIL import Image# Define the path to the directory containing the lab…

AI神經網絡降噪 vs 傳統單/雙麥克風降噪的核心優勢對比

1. 降噪原理的本質差異 對比維度傳統單/雙麥克風降噪AI神經網絡降噪技術基礎基于固定規則的信號處理&#xff08;如譜減法、維納濾波&#xff09;基于深度學習的動態建模&#xff08;DNN/CNN/Transformer&#xff09;噪聲樣本依賴預設有限噪聲類型訓練數據覆蓋數十萬種真實環境…