欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

React 進(jìn)入頁(yè)面后自動(dòng) focus 到某個(gè)輸入框的解決方案

 更新時(shí)間:2024年02月20日 15:29:18   作者:徐同保  
React.js 當(dāng)中提供了 ref 屬性來(lái)幫助我們獲取已經(jīng)掛載的元素的 DOM 節(jié)點(diǎn),你可以給某個(gè) JSX 元素加上 ref屬性,這篇文章主要介紹了React 進(jìn)入頁(yè)面以后自動(dòng) focus 到某個(gè)輸入框,需要的朋友可以參考下

在 React.js 當(dāng)中你基本不需要和 DOM 直接打交道。React.js 提供了一系列的 on* 方法幫助我們進(jìn)行事件監(jiān)聽(tīng),所以 React.js 當(dāng)中不需要直接調(diào)用 addEventListener 的 DOM API;以前我們通過(guò)手動(dòng) DOM 操作進(jìn)行頁(yè)面更新(例如借助 jQuery),而在 React.js 當(dāng)中可以直接通過(guò) setState 的方式重新渲染組件,渲染的時(shí)候可以把新的 props 傳遞給子組件,從而達(dá)到頁(yè)面更新的效果。

React.js 這種重新渲染的機(jī)制幫助我們免除了絕大部分的 DOM 更新操作,也讓類(lèi)似于 jQuery 這種以封裝 DOM 操作為主的第三方的庫(kù)從我們的開(kāi)發(fā)工具鏈中刪除。

但是 React.js 并不能完全滿(mǎn)足所有 DOM 操作需求,有些時(shí)候我們還是需要和 DOM 打交道。比如說(shuō)你想進(jìn)入頁(yè)面以后自動(dòng) focus 到某個(gè)輸入框,你需要調(diào)用 input.focus() 的 DOM API,比如說(shuō)你想動(dòng)態(tài)獲取某個(gè) DOM 元素的尺寸來(lái)做后續(xù)的動(dòng)畫(huà),等等。

React.js 當(dāng)中提供了 ref 屬性來(lái)幫助我們獲取已經(jīng)掛載的元素的 DOM 節(jié)點(diǎn),你可以給某個(gè) JSX 元素加上 ref屬性。

可以看到我們給 input 元素加了一個(gè) ref 屬性,這個(gè)屬性值是一個(gè)函數(shù)。當(dāng) input 元素在頁(yè)面上掛載完成以后,React.js 就會(huì)調(diào)用這個(gè)函數(shù),并且把這個(gè)掛載以后的 DOM 節(jié)點(diǎn)傳給這個(gè)函數(shù)。在函數(shù)中我們把這個(gè) DOM 元素設(shè)置為組件實(shí)例的一個(gè)屬性,這樣以后我們就可以通過(guò) this.input 獲取到這個(gè) DOM 元素。

然后我們就可以在 componentDidMount 中使用這個(gè) DOM 元素,并且調(diào)用 this.input.focus() 的 DOM API。整體就達(dá)到了頁(yè)面加載完成就自動(dòng) focus 到輸入框的功能(大家可以注意到我們用上了 componentDidMount 這個(gè)組件生命周期)。

我們可以給任意代表 HTML 元素標(biāo)簽加上 ref 從而獲取到它 DOM 元素然后調(diào)用 DOM API。但是記住一個(gè)原則:能不用 ref 就不用。特別是要避免用 ref 來(lái)做 React.js 本來(lái)就可以幫助你做到的頁(yè)面自動(dòng)更新的操作和事件監(jiān)聽(tīng)。多余的 DOM 操作其實(shí)是代碼里面的“噪音”,不利于我們理解和維護(hù)。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>React 進(jìn)入頁(yè)面以后自動(dòng) focus 到某個(gè)輸入框</title>
<script src="https://unpkg.com/react@16/umd/react.development.js"></script>
<script src="https://unpkg.com/react-dom@16/umd/react-dom.development.js"></script>
<script src="https://unpkg.com/babel-standalone@6.15.0/babel.min.js"></script>
</head>
<body>
<div id="root"></div>
<script type="text/babel">
class AutoFocusInput extends React.Component {
  componentDidMount () {
    this.input.focus()
  }
  render () {
    return (
      <input ref={(input) => this.input = input} />
    )
  }
}
ReactDOM.render(
  <AutoFocusInput />,
  document.getElementById('root')
);
</script>
</body>
</html>

另一種寫(xiě)法:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>React 進(jìn)入頁(yè)面以后自動(dòng) focus 到某個(gè)輸入框</title>
<script src="https://unpkg.com/react@16/umd/react.development.js"></script>
<script src="https://unpkg.com/react-dom@16/umd/react-dom.development.js"></script>
<script src="https://unpkg.com/babel-standalone@6.15.0/babel.min.js"></script>
</head>
<body>
<div id="root"></div>
<script type="text/babel">
class MyComponent extends React.Component {
  constructor(props) {
    super(props);
    this.inputRef = React.createRef();
  }
  render() {
    return <input type="text" ref={this.inputRef} />;
  }
  componentDidMount() {
    this.inputRef.current.focus();
  }
}
ReactDOM.render(
  <MyComponent />,
  document.getElementById('root')
);
</script>
</body>
</html>

到此這篇關(guān)于React 進(jìn)入頁(yè)面以后自動(dòng) focus 到某個(gè)輸入框的文章就介紹到這了,更多相關(guān)React 自動(dòng) focus 輸入框內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 在React框架中實(shí)現(xiàn)一些AngularJS中ng指令的例子

    在React框架中實(shí)現(xiàn)一些AngularJS中ng指令的例子

    這篇文章主要介紹了在JavaScript的React框架中實(shí)現(xiàn)一些AngularJS指令的例子,React使用Virtual DOM因而與普通的js框架有些不同,需要的朋友可以參考下
    2016-03-03
  • 30分鐘帶你全面了解React Hooks

    30分鐘帶你全面了解React Hooks

    Hooks是一種函數(shù),該函數(shù)允許您從函數(shù)式組件 “勾住(hook into)”React狀態(tài)和生命周期功能。Hooks在類(lèi)內(nèi)部不起作用 - 它們?cè)试S你無(wú)需類(lèi)就使用 React。
    2021-05-05
  • React詳細(xì)講解JSX和組件的使用

    React詳細(xì)講解JSX和組件的使用

    jsx就是javsscript與xml結(jié)合的一種格式,是js語(yǔ)法的一種擴(kuò)展,只要把html代碼寫(xiě)在js中就是jsx。react中定義組件有3種寫(xiě)法:函數(shù)的方式、es5的寫(xiě)法、es6(類(lèi))的寫(xiě)法
    2022-08-08
  • react實(shí)現(xiàn)路由動(dòng)畫(huà)跳轉(zhuǎn)功能

    react實(shí)現(xiàn)路由動(dòng)畫(huà)跳轉(zhuǎn)功能

    這篇文章主要介紹了react路由動(dòng)畫(huà)跳轉(zhuǎn)功能,大概思路是下載第三方庫(kù)?引用,創(chuàng)建css文件引用,想要實(shí)現(xiàn)跳轉(zhuǎn)動(dòng)畫(huà)功能,就在那個(gè)組件的根節(jié)點(diǎn)綁定classname屬性即可,在跳轉(zhuǎn)的時(shí)候即可實(shí)現(xiàn),需要的朋友可以參考下
    2023-10-10
  • React使用TypeScript的最佳實(shí)踐和技巧

    React使用TypeScript的最佳實(shí)踐和技巧

    在React項(xiàng)目中使用TypeScript可以顯著提高代碼的可維護(hù)性和可讀性,并提供強(qiáng)大的類(lèi)型檢查功能,減少運(yùn)行時(shí)錯(cuò)誤,以下是一些優(yōu)雅地將TypeScript集成到React項(xiàng)目中的最佳實(shí)踐和技巧,需要的朋友可以參考下
    2024-06-06
  • VSCode配置react開(kāi)發(fā)環(huán)境的步驟

    VSCode配置react開(kāi)發(fā)環(huán)境的步驟

    本篇文章主要介紹了VSCode配置react開(kāi)發(fā)環(huán)境的步驟,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-12-12
  • React自定義hook的方法

    React自定義hook的方法

    Hook是 React 16.8 的新增特性。它通常與函數(shù)式組件同時(shí)使用??梢允购瘮?shù)式組件在不編寫(xiě) class 的情況下,可以擁有class組件的狀態(tài)、生命周期、引用等功能,這篇文章主要介紹了React自定義hook的相關(guān)知識(shí),需要的朋友可以參考下
    2022-06-06
  • 一文詳解React中Hook的作用和用處

    一文詳解React中Hook的作用和用處

    Hook是一種函數(shù),它可以讓你在函數(shù)組件中“掛鉤”到React狀態(tài)和生命周期等特性,這篇文章主要和大家介紹了React中Hook的作用和用處,希望對(duì)大家有所幫助
    2023-05-05
  • React父組件數(shù)據(jù)實(shí)時(shí)更新了,子組件沒(méi)有更新的問(wèn)題

    React父組件數(shù)據(jù)實(shí)時(shí)更新了,子組件沒(méi)有更新的問(wèn)題

    這篇文章主要介紹了React父組件數(shù)據(jù)實(shí)時(shí)更新了,子組件沒(méi)有更新的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • React捕獲并處理異常的方式

    React捕獲并處理異常的方式

    這篇文章主要給大家介紹了React優(yōu)雅的捕獲并處理渲染異常方式,文章通過(guò)代碼示例給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2023-11-11

最新評(píng)論