国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

[React] useRef用法和特性

這篇具有很好參考價(jià)值的文章主要介紹了[React] useRef用法和特性。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

[React] useRef用法和特性

useRef 與 useState 的區(qū)別

一般在使用react-hook的時(shí)候,我們用到最多的就是定義變量,以及對(duì)應(yīng)的修改變量
下面是一個(gè)最基本的 react-hook 應(yīng)用程序

const Home = () => {
	const [username, setUserName] = useState('');
	
	return<input 
			value={username}
			onChange={(e) => setUserName(e.target.value)}
		/>}

以上并不是以使用useState的方式來進(jìn)行對(duì)useRef的襯托,兩者功能是不同的,只是便于區(qū)分


但是如果我想讓瀏覽器渲染的時(shí)候,讓他的次數(shù)自增,這樣就會(huì)有一些意想不到的隱患…
如下代碼所示,當(dāng)我使用 useEffect 鉤子進(jìn)行input值渲染的時(shí)候,他的狀態(tài)會(huì)發(fā)生改變,然后又會(huì)重新渲染,狀態(tài)又重新改變,于是就這樣無限循環(huán)下去…

const Home = () => {
	const [username, setUserName] = useState('');
	
	useEffect(() => { // useEffect 頁面渲染時(shí)所調(diào)用的鉤子
		setUserName(username => username + 1);
	}, [username])
	
	return<input 
			value={username} // 循環(huán)...循環(huán)...循環(huán)
		/>}

useRef 的 用法以及特性


介紹: useRef 是一個(gè) React Hook,它能讓你引用一個(gè)不需要渲染的值。

使用 useRef 可以返回一個(gè)只有一個(gè)屬性的對(duì)象: current,從一開始,他會(huì)是你傳遞的 initial Value, 之后,如果你需要,可以修改它(ref.current), 如果或他是一個(gè)需要你渲染的對(duì)象,那么你將不應(yīng)該去修改它。

這可能會(huì)讓你想起 useState,但是useRef是可變的, useRef值不會(huì)觸發(fā)react渲染機(jī)制, 因?yàn)樗旧砭褪且粋€(gè)再普通不過的javascript對(duì)象。這意味著 ref 是存儲(chǔ)一些不影響組件視圖輸出的信息的完美選擇!


官方文檔注意:
除了 初始化 外不要在渲染期間寫入 或者讀取 ref.current。這會(huì)使你的組件的行為不可預(yù)測(cè)。

在嚴(yán)格模式下,React 將會(huì) 調(diào)用兩次組件方法,這是為了 幫助你發(fā)現(xiàn)意外的問題。這只是開發(fā)模式下的行為,不影響生產(chǎn)模式。每個(gè) ref 對(duì)象將會(huì)創(chuàng)建兩次,但是其中一個(gè)版本將被丟棄。如果你的組件函數(shù)是純的(應(yīng)該如此),這不會(huì)影響其行為。


useRef(initialValue)
在你組件的頂層調(diào)用 useRef 聲明一個(gè) ref。

import React, { useRef } from 'react'

const useRefTest = () => {
   const pNum = useRef(0)
   ...
}

useRef 會(huì)返回單個(gè) current

current: 0

通過使用 ref,你可以確保:

  • 你可以在重新渲染之間 存儲(chǔ)信息(不像是普通對(duì)象,每次渲染都會(huì)重置)。
  • 改變它 不會(huì)觸發(fā)重新渲染(不像是 state 變量,會(huì)觸發(fā)重新渲染)。
  • 對(duì)于你的組件的每個(gè)副本來說,這些信息都是本地的(不像是外面的變量,是共享的)。

通過 ref 操作 DOM

使用 ref 操作 DOM 是非常常見的。React 內(nèi)置了對(duì)它的支持。

首先,聲明一個(gè) initial value 為 null 的 ref 對(duì)象

import React, { useRef } from 'react'

const test = () => {
  const defaultDom = useRef(null)
}

然后將你的 ref 對(duì)象作為 ref 屬性傳遞給你想要操作的 DOM 節(jié)點(diǎn)的 JSX

import React, { useRef } from 'react'

const test = () => {
  const defaultDom = useRef(null)

  return (
  <>
	 <input ref={defaultDom} />
	 <button onClick={handleClick}>foucs the input!</button>
  </>
  )
}

當(dāng) React 創(chuàng)建 DOM 節(jié)點(diǎn)并將其渲染到屏幕時(shí),React 將會(huì)把 DOM 節(jié)點(diǎn)設(shè)置為你的 ref 對(duì)象的 current 屬性?,F(xiàn)在你可以訪問 的 DOM 節(jié)點(diǎn),并且可以調(diào)用類似于 focus() 的方法 (獲取input輸入框的焦點(diǎn)):

  const handleClick = () => {
    defaultDom.current.focus()
  }

[React] useRef用法和特性文章來源地址http://www.zghlxwxcb.cn/news/detail-428292.html

更多請(qǐng)參考官方文檔!

到了這里,關(guān)于[React] useRef用法和特性的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • react中useRef的應(yīng)用

    useRef是隨著react函數(shù)式組件發(fā)展而來的,是react眾多官方hook中的一個(gè),調(diào)用useRef可以返回一個(gè)伴隨這組件整個(gè)聲明周期不發(fā)生改變的對(duì)象,這個(gè)對(duì)象常見的用途有兩個(gè): 用于綁定dom元素,從而實(shí)現(xiàn)對(duì)dom元素的操作 用于保存不希望隨著組件重新渲染而改變的值,如定時(shí)器 我在

    2024年02月06日
    瀏覽(26)
  • React-Hooks----useRef()

    用于創(chuàng)建對(duì)DOM元素的引用。它還可以用于存儲(chǔ)組件之間共享的變量,這些變量不會(huì)在組件重新渲染時(shí)發(fā)生更改。 useRef() 可以接收一個(gè)初始值,返回一個(gè)包含 current 屬性的對(duì)象,這個(gè)屬性可以存儲(chǔ)任意可變值,而且當(dāng)修改它時(shí)不會(huì)重新渲染組件。 useRef() 的常見用法包括: 訪問

    2023年04月09日
    瀏覽(16)
  • React hooks文檔筆記(四) useRef

    React hooks文檔筆記(四) useRef

    當(dāng)想讓組件記住一些信息,又不想觸發(fā)新的渲染,可以使用ref:總是返回同一個(gè)對(duì)象。 1. state 和 refs 的比較 refs(普通的 JavaScript 對(duì)象) state 更改時(shí) 不觸發(fā)重新渲染 更改時(shí) 觸發(fā)重新渲染 可變的——修改/更新 current ’s value (修改完立即生效 ?ref.current = 5; ?? console.log(ref

    2024年02月12日
    瀏覽(42)
  • 淺談React中的ref和useRef

    淺談React中的ref和useRef

    目錄 什么是useRef? 使用 ref 訪問 DOM 元素 Ref和useRef之間的區(qū)別 Ref和useRef的使用案例 善用工具 結(jié)論 在各種? JavaScript? 庫和框架中, React ?因其開發(fā)人員友好性和支持性而得到認(rèn)可。 大多數(shù)開發(fā)人員發(fā)現(xiàn)? React ?非常舒適且可擴(kuò)展,因?yàn)樗峁┝算^子。鉤子是 ?React ?附帶的

    2024年02月14日
    瀏覽(18)
  • 3.react useRef使用與常見問題

    https://zh-hans.legacy.reactjs.org/docs/hooks-faq.html#why-am-i-seeing-stale-props-or-state-inside-my-function

    2024年02月12日
    瀏覽(19)
  • React鉤子函數(shù)之useRef的基本使用

    React鉤子函數(shù)中的useRef是一個(gè)非常有用的工具,它可以用來獲取DOM元素或者保存一些變量。在這篇文章中,我們將會(huì)討論useRef的基本使用。 首先,我們需要知道useRef是如何工作的。它返回一個(gè)可變的ref對(duì)象,這個(gè)對(duì)象可以在組件的整個(gè)生命周期中被訪問。當(dāng)我們需要獲取DOM元

    2024年02月10日
    瀏覽(19)
  • react 之 useState

    react 之 useState

    參考:https://blog.csdn.net/Ljwen_/article/details/125319191 一、基本使用 useState是 react 提供的一個(gè)定義響應(yīng)式變量的 hook 函數(shù),基本語法如下: 它返回一個(gè)狀態(tài)和一個(gè)修改狀態(tài)的方法,狀態(tài)需要通過這個(gè)方法來進(jìn)行修改; initialCount 是我們傳入的一個(gè)初始狀態(tài),它是惰性的,我們可以

    2023年04月23日
    瀏覽(24)
  • react之useState詳解

    react之useState詳解

    它是React 16.8 的新特性,我們?cè)赗eact里面一般都是用Class去寫組件,但是有時(shí)候會(huì)發(fā)現(xiàn)不用它更方便,但是問題來了: 不用Class的時(shí)候,數(shù)據(jù)的狀態(tài)改變?nèi)绾未鎯?chǔ)呢? 如果你用 var,let,const 等等,你會(huì)發(fā)現(xiàn):值雖然改變了,但是頁面并沒有重新渲染,也就是說, 這些定

    2024年04月25日
    瀏覽(26)
  • React 使用 useRef() 獲取循環(huán)中所有子組件實(shí)例

    React 使用 useRef() 獲取循環(huán)中所有子組件實(shí)例

    之前項(xiàng)目中使用了 antd pro 中的 可編輯表格 (EditableProTable) ,在頁面中表格要經(jīng)過多層遍歷后組成的新頁面,所以我將之抽成了一個(gè)公用的組件,另外在遍歷的最外層需要通過一個(gè)按鈕統(tǒng)一提交表格數(shù)據(jù),但是提交數(shù)據(jù)之前需要對(duì)每一個(gè)表格進(jìn)行非空校驗(yàn)。 遍歷中引入組件這

    2024年02月11日
    瀏覽(51)
  • React -- useState使用方法

    userState 是一個(gè)React Hook (函數(shù))。它允許我們向組件添加一個(gè)狀態(tài)變量,從而控制影響組件的渲染結(jié)果 1. useState是一個(gè)函數(shù),返回值是一個(gè)數(shù)組 2. 數(shù)組中第一個(gè)參數(shù)是狀態(tài)變量,第二個(gè)參數(shù)是set開頭的函數(shù)名,用于修改變量 3. useState的參數(shù)作為count的初始值 4.使用舉例

    2024年02月19日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包