React三大屬性之Refs的使用詳解
refs是React中用來(lái)取得某個(gè)JSX組件或者某個(gè)DOM中的一些狀態(tài)值的時(shí)候,用來(lái)獲取節(jié)點(diǎn)的方法。在React官方的解釋中,它的適用范圍如下:
- 管理焦點(diǎn),文本選擇或媒體播放。
- 觸發(fā)強(qiáng)制動(dòng)畫(huà)。
- 集成第三方 DOM 庫(kù)。
React文檔中再三強(qiáng)調(diào),請(qǐng)不要過(guò)度使用refs,所以當(dāng)我們可以用dom原生對(duì)象解決時(shí),盡量不要使用refs 依照之前的寫(xiě)法,首先是給出類(lèi)組件和函數(shù)組件中refs的寫(xiě)法
類(lèi)組件
在類(lèi)中,refs有三種方式,目前最常用的是回調(diào)的形式使用,分別進(jìn)行演示
//直接定義refs,已廢棄
class App extends React.PureComponent{
changeInput = ()=>{
const {input} = this.refs
}
render() {
return (
<div>
<input type="text" placeholder={"please input your value"} onBlur={this.changeInput} ref={"input"}/>
</div>
)
}
}
//用回調(diào)的形式使用
class App extends React.PureComponent{
changeInput = ()=>{
console.log(this.inputRef);
}
render() {
return (
<div>
<input type="text" placeholder={"please input your value"} onBlur={this.changeInput} ref={(el)=>{this.inputRef = el}}/>
</div>
)
}
}
//用createRef
class App extends React.PureComponent{
inputRef = React.createRef()
changeInput = ()=>{
console.log(this.inputRef.current);
}
render() {
return (
<div>
<input type="text" placeholder={"please input your value"} onBlur={this.changeInput} ref={this.inputRef}/>
</div>
)
}
}
以上就是類(lèi)組件的三種Ref的寫(xiě)法
函數(shù)組件
function App(){
const inputRef = useRef("")
return (
<div>
<input type="text" placeholder={"please input your value"} ref={inputRef}/>
</div>
)
}
用一個(gè)useRef直接就完成了代碼
面試常問(wèn):React中的refs作用是什么?
Refs 是 React 提供給我們的安全訪問(wèn) DOM 元素或者某個(gè)組件實(shí)例的句柄。在類(lèi)組件中,React將ref屬性中第一個(gè)參數(shù)作為DOM中的句柄。而函數(shù)組件中,react用hooks的api useRef也能獲得ref(在hooks中也常常用useRef的特性即不隨著組件刷新而刷新存儲(chǔ)的數(shù)據(jù)從而寫(xiě)一些不變的量)
以上就是React三大屬性之Refs的使用詳解的詳細(xì)內(nèi)容,更多關(guān)于React三大屬性之Refs的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
React實(shí)時(shí)預(yù)覽react-live源碼解析
這篇文章主要為大家介紹了React實(shí)時(shí)預(yù)覽react-live源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08
jenkins分環(huán)境部署vue/react項(xiàng)目的方法步驟
這篇文章主要介紹了jenkins分環(huán)境部署vue/react項(xiàng)目的方法,本文分步驟給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-02-02
React?Native系列之Recyclerlistview使用詳解
這篇文章主要為大家介紹了React?Native系列之Recyclerlistview使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10
react native仿微信PopupWindow效果的實(shí)例代碼
本篇文章主要介紹了react native仿微信PopupWindow效果的實(shí)例代碼,具有一定的參考價(jià)值,有興趣的可以了解一下2017-08-08
React使用Mobx6.x共享狀態(tài)問(wèn)題
這篇文章主要介紹了React使用Mobx6.x共享狀態(tài)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-10-10
解決React報(bào)錯(cuò)Property 'X' does not 
這篇文章主要為大家介紹了解決React報(bào)錯(cuò)Property 'X' does not exist on type 'HTMLElement',有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12
react-redux中connect()方法詳細(xì)解析
connect()是React-redux中的核心方法之一,它將react組件預(yù)redux中的Store真正連接在一起,下面這篇文章主要給大家介紹了react-redux中connect()方法的相關(guān)資料,文中介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-05-05

