refs是React中用來取得某個JSX組件或者某個DOM中的一些狀態值的時候,用來獲取節點的方法。在React官方的解釋中,它的適用范圍如下:
- 管理焦點,文本選擇或媒體播放。
- 觸發強制動畫。
- 集成第三方 DOM 庫。
React文檔中再三強調,請不要過度使用refs,所以當我們可以用dom原生對象解決時,盡量不要使用refs 依照之前的寫法,首先是給出類組件和函數組件中refs的寫法
類組件
在類中,refs有三種方式,目前最常用的是回調的形式使用,分別進行演示
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
//直接定義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> ) } } //用回調的形式使用 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> ) } } |
以上就是類組件的三種Ref的寫法
函數組件
1
2
3
4
5
6
7
8
|
function App(){ const inputRef = useRef( "" ) return ( <div> <input type= "text" placeholder={ "please input your value" } ref={inputRef}/> </div> ) } |
用一個useRef直接就完成了代碼
面試常問:React中的refs作用是什么?
Refs 是 React 提供給我們的安全訪問 DOM 元素或者某個組件實例的句柄。在類組件中,React將ref屬性中第一個參數作為DOM中的句柄。而函數組件中,react用hooks的api useRef也能獲得ref(在hooks中也常常用useRef的特性即不隨著組件刷新而刷新存儲的數據從而寫一些不變的量)
以上就是React三大屬性之Refs的使用詳解的詳細內容,更多關于React三大屬性之Refs的資料請關注服務器之家其它相關文章!
原文鏈接:https://juejin.cn/post/6950943650050392094