日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

React 新 Hook:UseFormStatus 使用詳解

來源: 責編: 時間:2024-07-17 07:44:48 694觀看
導讀一、action 支持異步回調(diào)一個令人振奮的特性就是,在 React19 中,action 支持傳入異步回調(diào)函數(shù)。例如如下代碼:async function formAction(formdata) { const title = formdata.get('title') const content = formdata.

qtn28資訊網(wǎng)——每日最新資訊28at.com

一、action 支持異步回調(diào)

一個令人振奮的特性就是,在 React19 中,action 支持傳入異步回調(diào)函數(shù)。qtn28資訊網(wǎng)——每日最新資訊28at.com

例如如下代碼:qtn28資訊網(wǎng)——每日最新資訊28at.com

async function formAction(formdata) {  const title = formdata.get('title')  const content = formdata.get('content')  // 簡單校驗  if (!title || !content) {    return;  }  await new Promise(resolve => setTimeout(resolve, 1000))  setPosts(posts => [...posts, {title,content}])}
<form action={formAction}>  ...</form>

有了這個特性的支持,我們就可以非常方便的利用它來實現(xiàn)一些上傳邏輯。不過一個小小的需求就是,點擊提交之后,接口請求的過程中,我們希望按鈕處于禁用狀態(tài),那應(yīng)該怎么辦呢?qtn28資訊網(wǎng)——每日最新資訊28at.com

React 19 提供了名為 useFormStatus 的 hook 來幫助我們做到這個事情。qtn28資訊網(wǎng)——每日最新資訊28at.com

二、useFormStatus

和別的 hook 不同的是,我們需要從 react-dom 中獲取到它的引用。qtn28資訊網(wǎng)——每日最新資訊28at.com

import { useFormStatus } from "react-dom";

useFormStatus 能夠在 form 元素的子組件中,獲取到表單提交時的 pending 狀態(tài)和表單內(nèi)容。qtn28資訊網(wǎng)——每日最新資訊28at.com

?qtn28資訊網(wǎng)——每日最新資訊28at.com

與 form 同屬于一個組件,獲取不到,只能是封裝后的子組件才能獲取到。qtn28資訊網(wǎng)——每日最新資訊28at.com

const { pending, data, method, action } = useFormStatus();

pending 為 true 時,表示請求正在進行。我們可以利用這個值的變化在提交按鈕上設(shè)置 Loading 樣式。qtn28資訊網(wǎng)——每日最新資訊28at.com

data 格式為 FormData,表示此次提交里表單的所有內(nèi)容。qtn28資訊網(wǎng)——每日最新資訊28at.com

method 表示我們在提交時,所采用的請求方式,默認值為 get。qtn28資訊網(wǎng)——每日最新資訊28at.com

?qtn28資訊網(wǎng)——每日最新資訊28at.com

需要注意的是,提交方式并不需要通過如下方式設(shè)置,這樣做會報錯。qtn28資訊網(wǎng)——每日最新資訊28at.com

<form method="post"></form>

qtn28資訊網(wǎng)——每日最新資訊28at.com

這里主要是針對提交按鈕做的操作,因此我們需要單獨將提交按鈕相關(guān)的部分拿出來封裝成為一個子組件,并在子組件中利用 useFormStatus 獲取異步 action 的 pending 狀態(tài)。qtn28資訊網(wǎng)——每日最新資訊28at.com

代碼非常的簡單,如下所示:qtn28資訊網(wǎng)——每日最新資訊28at.com

function SubmitButton() {  const {pending} = useFormStatus()    return (    <div className="form_item">      <button        className='primary'        type='submit'        disabled={pending}      >        {pending ? 'Submitting...' : 'Submit'}      </button>          </div>  )}

然后在 form 元素中使用該組件即可。qtn28資訊網(wǎng)——每日最新資訊28at.com

<form actinotallow={formAction} method="post">  <div className="form_item">    <div className="label">Title</div>    <input name='title' type="text" placeholder='Enter title' />  </div>  <div className="form_item">    <div className="label">Name</div>    <input name='content' type="text" placeholder='Enter you name' />  </div>    <SubmitButton /></form>

四、案例二:提交時禁止輸入內(nèi)容

通常情況下,我們也希望在表單提交時,不允許輸入內(nèi)容。useFormStatus 可以很容易幫我們做到這一點。qtn28資訊網(wǎng)——每日最新資訊28at.com

實現(xiàn)非常簡單,我們將某一個字段單獨封裝到子組件中,利用 useFormStatus 提供的 pending 狀態(tài)來判斷是否禁用輸入,代碼如下:qtn28資訊網(wǎng)——每日最新資訊28at.com

function Input2({required, name}) {  const {pending} = useFormStatus()  return (    <div className="form_item">      <div className="label">Name</div>      <input        name={name}        type="text"        placeholder='Enter you name'        disabled={pending}      />    </div>  )}
<form action={formAction}>  <div className="form_item">    <div className="label">Title</div>    <input name='title' type="text" placeholder='Enter title' />  </div>  <Input2 required name='content' />  <SubmitButton /></form>

五、總結(jié)

useFormStatus 是結(jié)合 action 異步請求時使用的 hook,它們是對 HTML 表單能力的增強。因此我們可以借助他們與 HTML 表單元素自身支持的特性實現(xiàn)更復雜的表單交互邏輯。qtn28資訊網(wǎng)——每日最新資訊28at.com

這里我們需要注意的是 action 與 onSubmit 的區(qū)別。onSubmit 會優(yōu)先于 action 執(zhí)行。并且,如果我們在 onSubmit 的回調(diào)函數(shù)中,使用了 preventDefault,action 回調(diào)將不會執(zhí)行。qtn28資訊網(wǎng)——每日最新資訊28at.com

function onSubmit(e) {  e.preventDefault()  // ...}

在 onSubmit 中,我們可以結(jié)合 state,通過控制數(shù)據(jù)的行為來自定義表單行為,而無需過多依賴 HTML 表單元素本身的能力。具體如何抉擇大家需要根據(jù)自身項目的需求情況來定。qtn28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-101273-0.htmlReact 新 Hook:UseFormStatus 使用詳解

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 別做平庸Coder!掌握這十個架構(gòu)絕技,讓你成為團隊MVP

下一篇: 線程池遇到父子任務(wù),有大坑,要注意!

標簽:
  • 熱門焦點
  • 盧偉冰長文解析K60至尊版 對Redmi有著里程碑式的意義

    在今天的Redmi后性能時代戰(zhàn)略發(fā)布會結(jié)束之后,Redmi總經(jīng)理盧偉冰又帶來了一篇長文,詳解了為什么 Redmi 要開啟后性能時代?為什么選擇和 MediaTek、Pixelworks 深度合作?以及后性
  • 對標蘋果的靈動島 華為帶來實況窗功能

    繼蘋果的靈動島之后,華為也在今天正式推出了“實況窗”功能。據(jù)今天鴻蒙OS 4.0的現(xiàn)場演示顯示,華為的實況窗可以更高效的展現(xiàn)出實時通知,比如鎖屏上就能看到外賣、打車、銀行
  • 三言兩語說透設(shè)計模式的藝術(shù)-簡單工廠模式

    一、寫在前面工廠模式是最常見的一種創(chuàng)建型設(shè)計模式,通常說的工廠模式指的是工廠方法模式,是使用頻率最高的工廠模式。簡單工廠模式又稱為靜態(tài)工廠方法模式,不屬于GoF 23種設(shè)計
  • 只需五步,使用start.spring.io快速入門Spring編程

    步驟1打開https://start.spring.io/,按照屏幕截圖中的內(nèi)容創(chuàng)建項目,添加 Spring Web 依賴項,并單擊“生成”按鈕下載 .zip 文件,為下一步做準備。請在進入步驟2之前進行解壓。圖
  • WebRTC.Net庫開發(fā)進階,教你實現(xiàn)屏幕共享和多路復用!

    WebRTC.Net庫:讓你的應(yīng)用更親民友好,實現(xiàn)視頻通話無痛接入! 除了基本用法外,還有一些進階用法可以更好地利用該庫。自定義 STUN/TURN 服務(wù)器配置WebRTC.Net 默認使用 Google 的
  • 2023年,我眼中的字節(jié)跳動

    此時此刻(2023年7月),字節(jié)跳動從未上市,也從未公布過任何官方的上市計劃;但是這并不妨礙它成為中國最受關(guān)注的互聯(lián)網(wǎng)公司之一。從2016-17年的抖音強勢崛起,到2018年的&ldquo;頭騰
  • “又被陳思誠騙了”

    作者|張思齊 出品|眾面(ID:ZhongMian_ZM)如今的國產(chǎn)懸疑電影,成了陳思誠的天下。最近大爆電影《消失的她》票房突破30億斷層奪魁暑期檔,陳思誠再度風頭無兩。你可以說陳思誠的
  • OPPO K11搭載高性能石墨散熱系統(tǒng):旗艦同款 性能涼爽釋放

    日前OPPO官方宣布,將于7月25日14:30舉辦新品發(fā)布會,屆時全新的OPPO K11將正式與大家見面,將主打旗艦影像,和同檔位競品相比,其最大的賣點就是將配備索尼
  • 華為舉行春季智慧辦公新品發(fā)布會 首次推出電子墨水屏平板

    北京時間2月27日晚,華為在巴塞羅那舉行春季智慧辦公新品發(fā)布會,在海外市場推出之前已經(jīng)在中國市場上市的筆記本、平板、激光打印機等辦公產(chǎn)品,并首次推出搭載
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
国产欧美日韩在线观看| 另类欧美日韩国产在线| 一区二区精品国产| 亚洲婷婷综合色高清在线 | 亚洲国产成人在线播放| 91久久极品少妇xxxxⅹ软件| 一区二区电影免费观看| 性色av一区二区怡红| 久久亚洲一区二区| 亚洲激情一区| 一本久久a久久免费精品不卡| 亚洲欧洲av一区二区| 久久一二三四| 国产精品99一区二区| 国产主播精品在线| 亚洲看片网站| 久久9热精品视频| 欧美精品久久久久久久久久| 国产精品视频男人的天堂| 影音先锋亚洲视频| 亚洲色无码播放| 久久人91精品久久久久久不卡| 欧美母乳在线| 国产区精品视频| 亚洲美女黄色片| 久久精品一级爱片| 欧美婷婷六月丁香综合色| 在线播放中文字幕一区| 亚洲私人影院在线观看| 久久综合久久综合这里只有精品| 欧美日韩一区二区三区四区在线观看 | 国产精品xxxav免费视频| 尤物在线精品| 午夜视频精品| 欧美日韩国产综合一区二区| 国内成+人亚洲+欧美+综合在线| 一区二区三区免费观看| 久久综合九九| 国产欧美综合一区二区三区| 亚洲精品免费在线播放| 久久久久国产精品午夜一区| 国产精品久久久久久av福利软件| 亚洲啪啪91| 久久免费偷拍视频| 国产精品日日摸夜夜添夜夜av| 亚洲精品网站在线播放gif| 久久久精品日韩| 国产欧美日本| 亚洲一区免费网站| 欧美激情精品久久久久久久变态 | 亚洲一区二区三区三| 欧美喷潮久久久xxxxx| 在线观看日韩av电影| 欧美一级视频| 国产精品性做久久久久久| 国产精品99久久久久久久vr | 久久久在线视频| 国产欧美一区二区精品忘忧草| 99亚洲精品| 欧美激情综合色| 亚洲国产日韩在线一区模特| 久久精品亚洲乱码伦伦中文| 国产欧美日韩一区二区三区| 亚洲尤物视频在线| 国产精品大全| 这里只有精品在线播放| 欧美日本韩国在线| 亚洲精品小视频在线观看| 欧美成人免费在线视频| 海角社区69精品视频| 欧美影院视频| 国产亚洲激情视频在线| 欧美一区二区三区男人的天堂| 国产精品入口尤物| 亚洲在线观看视频网站| 国产精品成人aaaaa网站| 一区二区三区欧美日韩| 欧美日精品一区视频| 在线亚洲精品福利网址导航| 欧美日韩精品久久| 99视频精品全国免费| 欧美日韩中文字幕精品| 一区二区激情视频| 国产精品久久久久aaaa樱花| 亚洲欧美国产不卡| 国产精品综合| 久久成人国产| 在线不卡欧美| 欧美成人伊人久久综合网| 亚洲欧洲精品一区| 欧美激情日韩| 宅男精品视频| 国产美女诱惑一区二区| 久久精品成人| 亚洲大片免费看| 欧美精品观看| 亚洲视频在线一区观看| 国产欧美一区二区在线观看| 久久精品一区蜜桃臀影院 | 一区二区三区在线观看视频| 免费在线播放第一区高清av| 亚洲精品国产精品国自产在线 | 亚洲国产婷婷香蕉久久久久久| 乱中年女人伦av一区二区| 亚洲国产婷婷综合在线精品| 欧美激情综合| 亚洲一品av免费观看| 国产日韩三区| 开心色5月久久精品| 亚洲精品国产品国语在线app| 欧美日韩黄视频| 亚洲欧美一区二区三区久久| 国产婷婷一区二区| 噜噜爱69成人精品| 99视频精品在线| 国产精品主播| 麻豆91精品| 一本到12不卡视频在线dvd| 国产精品日日摸夜夜添夜夜av| 久久精品国产精品亚洲| 亚洲日本中文字幕| 国产精品女主播一区二区三区| 久久精彩视频| 亚洲伦伦在线| 国产视频久久久久| 欧美国产大片| 午夜老司机精品| 亚洲高清视频一区| 国产精品久久久久久影视| 久久精品久久99精品久久| 亚洲日本欧美天堂| 国产精品一区二区男女羞羞无遮挡 | 伊人久久婷婷色综合98网| 欧美日韩国产美| 欧美一区二区精品在线| 亚洲国产天堂久久综合| 国产精品乱码一区二三区小蝌蚪| 久久久国产精彩视频美女艺术照福利 | 国内精品**久久毛片app| 欧美精品一区在线观看| 欧美在线亚洲一区| 亚洲美女性视频| 国产最新精品精品你懂的| 欧美日韩国产综合久久| 久久久亚洲午夜电影| 宅男66日本亚洲欧美视频| 在线视频观看日韩| 国产麻豆视频精品| 欧美日韩精品一区二区天天拍小说 | 欧美亚洲视频| 99国产精品99久久久久久粉嫩 | 欧美一区二视频| 99国产精品国产精品久久| 一区在线观看| 国产精品美女一区二区在线观看| 欧美成人免费观看| 久久精品在线观看| 亚洲欧美日韩电影| 亚洲精品中文在线| 一区在线视频观看| 国产欧美日韩亚州综合| 欧美日韩在线电影| 欧美顶级艳妇交换群宴| 久久久久高清| 羞羞视频在线观看欧美| 亚洲视频欧美视频| 亚洲免费高清| 亚洲国产美国国产综合一区二区| 国产日韩欧美成人| 国产精品久久久久久影院8一贰佰 国产精品久久久久久影视 | 久久电影一区| 亚洲一区二区三区影院| 亚洲精品少妇30p| 在线观看一区视频| 国内精品久久久久久久影视麻豆| 国产精品久久中文| 欧美日韩精品国产| 欧美人牲a欧美精品| 免费在线日韩av| 久久夜色精品| 久久久99久久精品女同性| 午夜在线一区| 亚洲一区中文字幕在线观看| 亚洲美女免费精品视频在线观看| 亚洲第一狼人社区| 在线免费日韩片| 精品动漫一区| 有码中文亚洲精品| 国内精品一区二区三区| 国产婷婷成人久久av免费高清| 国产精品午夜国产小视频| 国产精品日韩欧美一区二区三区 | 日韩视频在线播放| 99国产精品久久久| 一区二区三区黄色| 一本不卡影院| 亚洲视频一起| 亚洲图中文字幕| 亚洲夜晚福利在线观看| 亚洲夜晚福利在线观看| 亚洲图片欧美一区| 亚洲欧美成人| 欧美一级播放| 欧美中文字幕在线观看|