" />

最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

React 自動(dòng)聚焦字段使用詳解

 更新時(shí)間:2023年07月17日 11:54:44   作者:lio_zero  
這篇文章主要為大家介紹了React 自動(dòng)聚焦字段使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

正文

自動(dòng)對焦可以讓你的應(yīng)用程序更方便用戶使用,有幾種方法可以自動(dòng)聚焦 React 輸入框。

要讓輸入框自動(dòng)聚焦,最簡單的方法是使用 autoFocus 屬性(注意大小寫):

<input name="username" type="text" autoFocus />

由于該屬性在各個(gè)瀏覽器的工作方式不一致,React 內(nèi)部實(shí)現(xiàn)了一個(gè) polyfill,會(huì)在元素掛載時(shí)使用 focus() 方法。

但這并總是有用,我們需要自己封裝一個(gè)。

有兩種實(shí)現(xiàn)方法:

  • 使用 useCallback()
  • 使用 useRef() 和 useEffect()

我們會(huì)將它編寫成一個(gè) Hooks,以便我們可以在項(xiàng)目中重復(fù)使用它。

使用 useCallback()

useCallback() 鉤子返回一個(gè)已記憶的回調(diào)函數(shù)。它接受兩個(gè)參數(shù)。第一個(gè)是要運(yùn)行的函數(shù),第二個(gè)是運(yùn)行函數(shù)所依賴的值數(shù)組。

import { useCallback } from 'react'
const useAutoFocus = () => {
  const inputRef = useCallback((inputElement) => {
    if (inputElement) {
      inputElement.focus()
    }
  }, [])
  return inputRef
}
export default useAutoFocus

注意到 useCallback 的第二個(gè)參數(shù)是一個(gè)空數(shù)組,這意味著該函數(shù)在組件渲染時(shí)只運(yùn)行一次。

當(dāng)表單組件渲染時(shí),將設(shè)置輸入框的引用。它執(zhí)行 useCallback() 鉤子中的函數(shù),該函數(shù)對輸入框調(diào)用 focus()。

使用 useRef() 和 useEffect()

useffect() 鉤子會(huì)告訴 React,在組件渲染之后,您需要組件執(zhí)行一些操作。它接受兩個(gè)參數(shù)。第一個(gè)是要運(yùn)行的函數(shù),第二個(gè)是一個(gè)依賴項(xiàng)數(shù)組,其功能與 useCallback() 中的相同。

useRef() 鉤子對函數(shù)組件的作用與 createRef() 對基于類組件的作用相同。這個(gè)鉤子創(chuàng)建了一個(gè)普通的 JavaScript 對象,您可以將其傳遞給一個(gè)元素,以保持對它的引用??梢酝ㄟ^對象的 current 屬性訪問此引用。

import { useRef, useEffect } from 'react'
const useAutoFocus = () => {
  const inputRef = useRef(null)
  useEffect(() => {
    if (inputRef.current) {
      inputRef.current.focus()
    }
  }, [])
  return inputRef
}
export default useAutoFocus

在上面的代碼中,我們創(chuàng)建了對輸入框的引用。然后,當(dāng)組件渲染時(shí),我們使用引用對象的 current 屬性調(diào)用輸入框的 focus()。

使用示例

import { useState, useEffect } from 'react'
import ReactDOM from 'react-dom'
import useAutoFocus from './hooks/useAutoFocus'
function App() {
  const emailInput = useAutoFocus()
  return (
    <>
      <form>
        <label>
          用戶
          <input name='username' type='text' ref={emailInput} />
        </label>
        <label>
          密碼
          <input name='password' type='password' />
        </label>
        <button type='submit'>登錄</button>
      </form>
    </>
  )
}
ReactDOM.render(<App />, document.getElementById('root'))

更多資料

React Hooks

以上就是React 自動(dòng)聚焦字段使用詳解的詳細(xì)內(nèi)容,更多關(guān)于React 自動(dòng)聚焦字段的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • React中的refs的使用教程

    React中的refs的使用教程

    本篇文章主要介紹了React中的refs的使用教程,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-02-02
  • React Context跨層級通信的利器

    React Context跨層級通信的利器

    本文主要介紹了React Context跨層級通信的利器,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2026-05-05
  • react項(xiàng)目優(yōu)化配置的操作詳解

    react項(xiàng)目優(yōu)化配置的操作詳解

    這篇文章主要介紹了react項(xiàng)目優(yōu)化配置,主要包括優(yōu)化配置CDN,優(yōu)化路由懶加載,結(jié)合示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • 解決React報(bào)錯(cuò)Property does not exist on type 'JSX.IntrinsicElements'

    解決React報(bào)錯(cuò)Property does not exist on 

    這篇文章主要為大家介紹了React報(bào)錯(cuò)Property does not exist on type 'JSX.IntrinsicElements'解決方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • react中實(shí)現(xiàn)修改input的defaultValue

    react中實(shí)現(xiàn)修改input的defaultValue

    這篇文章主要介紹了react中實(shí)現(xiàn)修改input的defaultValue方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • React18新特性startTransition詳解

    React18新特性startTransition詳解

    React18的新特性startTransition主要是為了優(yōu)化用戶體驗(yàn),通過標(biāo)記低優(yōu)先級的更新任務(wù),如頁面重渲染,使它們不會(huì)阻塞高優(yōu)先級的緊急任務(wù)如用戶輸入響應(yīng),本文介紹React18新特性startTransition,感興趣的朋友跟隨小編一起看看吧
    2024-09-09
  • 詳解使用React進(jìn)行組件庫開發(fā)

    詳解使用React進(jìn)行組件庫開發(fā)

    本篇文章主要介紹了詳解使用React進(jìn)行組件庫開發(fā),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-02-02
  • React?的?useReducer?和?Redux?的區(qū)別及什么情況下應(yīng)該使用?useReducer

    React?的?useReducer?和?Redux?的區(qū)別及什么情況下應(yīng)該使用?useReducer

    這篇文章主要介紹了React的useReducer和Redux的區(qū)別及什么情況下應(yīng)該使用useReducer,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2025-06-06
  • 基于react hooks,zarm組件庫配置開發(fā)h5表單頁面的實(shí)例代碼

    基于react hooks,zarm組件庫配置開發(fā)h5表單頁面的實(shí)例代碼

    這篇文章主要介紹了基于react hooks,zarm組件庫配置開發(fā)h5表單頁面,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-04-04
  • React+Typescript項(xiàng)目環(huán)境搭建并使用redux環(huán)境的詳細(xì)過程

    React+Typescript項(xiàng)目環(huán)境搭建并使用redux環(huán)境的詳細(xì)過程

    這篇文章主要介紹了React+Typescript項(xiàng)目環(huán)境搭建并使用redux環(huán)境的詳細(xì)過程,本文通過圖文實(shí)例相結(jié)合給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-09-09

最新評論

宁河县| 利川市| 桓台县| 永吉县| 德阳市| 武宁县| 南阳市| 五常市| 夏河县| 天门市| 榆林市| 安福县| 炉霍县| 延吉市| 仁怀市| 锡林浩特市| 双江| 剑河县| 商都县| 浦县| 邯郸市| 白山市| 平江县| 孝昌县| 汝城县| 沿河| 阿鲁科尔沁旗| 西充县| 横山县| 平利县| 蒙山县| 社旗县| 鄂尔多斯市| 溧阳市| 北票市| 汽车| 武川县| 容城县| 保定市| 宁津县| 扎兰屯市|