欧美成人精品手机在线观看_69视频国产_动漫精品第一页_日韩中文字幕网 - 日本欧美一区二区

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

React 入門基礎:表單處理

admin
2024年12月11日 22:1 本文熱度 312

?? 如果還不了解 HTML 、 CSS和JS,可以參考本號下的 HTML21 天入門教程、 CSS 21 天入門教程和JS21天入門教程

表單處理一直是 web 應用的重中之重,今天來看一下 react 如何處理表單。

從處理方式來看,有兩種選擇,一是將表單處理交給 React,另一種則是自己來處理。

這兩種方式都離不開 react 本身實現的支持。

且對于自己來處理,可以使用第三方提供的組件,比如 react-hook-form 獲得更多的便利。

useState 和 useRef

表單的處理,離不開 react 的兩個 hook: useState 和 useRef。

useState

前面介紹過,useState 用來管理狀態。

在表單中,表單控件的狀態則可以通過 useState 來進行管理。

以注冊表單為例,如下:

import React, { useState } from 'react';  function RegisterForm() {   const [mailValue, setMailValue] = useState('');   const [passwordValue, setPasswordValue] = useState('');   //如果有更多的表單控件    const handleSubmit = () => {     // 提交表單   };    const handleInputChange = (e) => {     setMailValue(e.target.value);     setPasswordValue(e.target.value);     //如果有更多的表單控件   };    return (     <div>       <input value={mailValue} onChange={handleInputChange} />       <input value={passwordValue} onChange={handleInputChange} />       {/* 如果有更多的表單控件 */}        <button onClick={handleSubmit}>Submit</button>     </div>   ); }  export default RegisterForm; 

這里通過 useState 對 name 和 mail 控件進行了狀態管理。

如果表單中有其它的控件,則按原樣增加相應的處理代碼。

上述代碼中的表單處理就交給 react 了,這樣創建出來的表單控件也被稱為 受控組件。

useRef

如果想要自己控制,則不能使用狀態來管理控件,這里就要使用 useRef,僅僅用于獲取值。

import React, { useRef } from 'react';  function RegisterFormNew() {   const mailRef = useRef(null);   const passwordRef = useRef(null);    const handleSubmit = () => {     const mailValue = passwordRef.current.value;     const passwordValue = passwordRef.current.value;     // 提交表單     console.log({ mailValue, passwordValue });   };    return (     <div>       <input ref={mailRef} />       <input ref={passwordRef} />       <button onClick={handleSubmit}>Submit</button>     </div>   ); }  export default RegisterFormNew; 

上述代碼中,使用了 useRef,通過它能獲取到控件當前的值,但也僅此而。

這樣實現的控件,也被稱為非受控件組件,意思是不受 react 的控制。

既然不受 react 控制,也就意味著自己可以寫代碼對表單進行處理。

當然現實情況下,不用自己從頭寫,借助于強大的第三方組件,可以輕松實現對表單的處理。

react-hook-form

這里介紹一個輕便的控件 react-hook-form,對上述代碼進行修改之后如下。

import React from 'react'; import { useForm } from 'react-hook-form';  const RegisterFormNewHook = () => {   const {     register,     handleSubmit,     formState: { errors },   } = useForm();    const onSubmit = (data) => {     console.log(data);   };    return (     <form onSubmit={handleSubmit(onSubmit)}>       <input         name="email"         {...register({           required: '請輸入郵箱。'         })}       />       {errors.email && <p>{errors.email.message}</p>}       <input         name="password"         type="password"         {...register({ required: '請輸入密碼。' })}       />       {errors.password && <p>{errors.password.message}</p>}       <button type="submit">提交</button>     </form>   ); };  export default RegisterFormNewHook; 

為了展示這個組件的功能,寫了一點驗證在里面。

但即使是這樣,也能看到代碼非常的簡潔和易懂。

總結

最后來總結一下今天的內容要點:

  • ?? 使用 useState 把表單交給 react 來處理,稱為受受控組件。
  • ?? 使用 useRef 對表單進行處理,稱為非受控組件。
  • ?? 第三方組件 react-hook-form 使用了鉤子方式提供了完善的表單處理。

該文章在 2024/12/12 10:43:11 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved