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

React使用ref方法與場景介紹

 更新時間:2022年10月31日 10:08:37   作者:搞前端的小菜  
這篇文章主要介紹了React使用ref方法與場景,React支持給任意組件添加特殊屬性。ref屬性接受一個回調函數(shù),它在組件被加載或卸載時會立即執(zhí)行

摘要

不管在Vue中還是React,如果我們想使用一個元素的DOM,不需要通過JS中操縱DOM的方法,它們提供了一個專屬的API就是ref。

而Vue中的ref可能比較簡單,這一篇主要講一下如何在React中使用ref,以及使用ref的場景。

1.ref的掛載

在React中,ref可以掛載到html元素上,同時也可以掛載在React元素上,看下面的代碼:

import React, { Component } from 'react'
// import { findDOMNode } from 'react-dom'
import Child from './Child'
export default class Father extends Component {
  componentDidMount(){
    console.log(this.refs.refElement);
    console.log(this.refs.child);
  }
  render() {
    return (
      <div>
        <input ref={ 'refElement' }></input>
        <Child ref={ 'child' }/>
        <button onClick={this.fn}>123</button>
      </div>
    )
  }
}

控制臺的打印為:

可以看到,在React中,ref是可以掛載到HTML元素和React元素上的。

(1)掛載HTML元素,返回真實的DOM

(2)掛載React元素,返回render后的實例對象

同時React也提供了一個方法findDOMNode可以將React元素的ref返回變成真實的DOM元素。

	import { findDOMNode } from 'react-dom'
    console.log(findDOMNode(this.refs.child));

同時在上面的代碼我們也可以看出來,ref的掛載是在componentDidMount等生命周期之前執(zhí)行的。

2.使用ref的三種方式

(1)字符串的方式

import React, { Component } from 'react'
export default class Father extends Component {
  componentDidMount(){
    console.log(this.refs.refElement);
  }
  render() {
    return (
      <div>
        <input ref={ 'refElement' }></input>
        <button onClick={this.fn}>123</button>
      </div>
    )
  }
}

這種方式和Vue的ref比較相似,但是官方目前已經(jīng)不推薦使用該方式,后續(xù)可能還會廢棄。

(2)函數(shù)的方式

import React, { Component } from 'react'
export default class Father extends Component {
  componentDidMount(){
    console.log(this.refElement);
  }
  render() {
    return (
      <div>
        <input ref={ ref => this.refElement = ref }></input>
        <button onClick={this.fn}>123</button>
      </div>
    )
  }
}

(3)react.CreateRef的方式

import React, { Component } from 'react'
export default class Father extends Component {
  refElement = React.createRef();
  componentDidMount(){
    console.log(this.refElement.current);
  }
  render() {
    return (
      <div>
        <input ref={this.refElement}></input>
        <button onClick={this.fn}>123</button>
      </div>
    )
  }
}

記住這里面通過refElement中的current,獲取真實的DOM元素。

3.ref的使用場景

這里我們說一個比較常見的場景,就是點擊按鈕讓輸入框聚焦:

import React, { Component } from 'react'
export default class Father extends Component {
  refElement = React.createRef();
  componentDidMount(){
    console.log(this.refElement.current);
  }
  fn = ()=>{
    this.refElement.current.focus();
  }
  render() {
    return (
      <div>
        <input ref={this.refElement}></input>
        <button onClick={this.fn}>聚焦</button>
      </div>
    )
  }
}

通過獲取DOM后,調用DOM上的focus方法API,來讓input框進行聚焦。

同時ref也可以適用于一些DOM元素的動畫效果,例如移動,變大變小,都需要通過ref來控制DOM,進行操作。

到此這篇關于React使用ref方法與場景介紹的文章就介紹到這了,更多相關React ref內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • react+antd4實現(xiàn)優(yōu)化大批量接口請求

    react+antd4實現(xiàn)優(yōu)化大批量接口請求

    這篇文章主要為大家詳細介紹了如何使用react hooks + antd4實現(xiàn)大批量接口請求的前端優(yōu)化,文中的示例代碼講解詳細,感興趣的小伙伴可以了解下
    2024-02-02
  • 教你如何實現(xiàn)在react項目中嵌入Blazor

    教你如何實現(xiàn)在react項目中嵌入Blazor

    這篇文章主要介紹了如何實現(xiàn)在react現(xiàn)有項目中嵌入Blazor,通過這個案例我們可以知道 blazor也可以像react那樣嵌入在任何的現(xiàn)有項目中,并且使用方便,需要的朋友可以參考下
    2023-01-01
  • ReactNative列表ListView的用法

    ReactNative列表ListView的用法

    本篇文章主要介紹了ReactNative列表ListView的用法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • 詳解React的組件通訊

    詳解React的組件通訊

    這篇文章主要介紹了詳解react組件通訊方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-11-11
  • ReactNative實現(xiàn)的橫向滑動條效果

    ReactNative實現(xiàn)的橫向滑動條效果

    本文介紹了ReactNative實現(xiàn)的橫向滑動條效果,本文結合示例代碼給大家介紹的非常詳細,補充介紹了ReactNative基于寬度變化實現(xiàn)的動畫效果,感興趣的朋友跟隨小編一起看看吧
    2024-02-02
  • React項目配置axios和反向代理和process.env環(huán)境配置等問題

    React項目配置axios和反向代理和process.env環(huán)境配置等問題

    這篇文章主要介紹了React項目配置axios和反向代理和process.env環(huán)境配置等問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • React之使用useState異步刷新的問題

    React之使用useState異步刷新的問題

    這篇文章主要介紹了React之使用useState異步刷新的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • React RenderProps模式超詳細講解

    React RenderProps模式超詳細講解

    render props是指一種在 React 組件之間使用一個值為函數(shù)的 prop 共享代碼的技術。簡單來說,給一個組件傳入一個prop,這個props是一個函數(shù),函數(shù)的作用是用來告訴這個組件需要渲染什么內容,那么這個prop就成為render prop
    2022-11-11
  • React.memo?React.useMemo對項目性能優(yōu)化使用詳解

    React.memo?React.useMemo對項目性能優(yōu)化使用詳解

    這篇文章主要為大家介紹了React.memo?React.useMemo對項目性能優(yōu)化的使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-01-01
  • react-routerV6版本和V5版本的詳細對比

    react-routerV6版本和V5版本的詳細對比

    React-Router5是React-Router6的前一個版本,它已經(jīng)被React-Router6取代,React-Router 6是一次較大的重大更新,本文就來介紹一下react-routerV6版本和V5版本的詳細對比,感興趣的可以了解一下
    2023-12-12

最新評論

海门市| 滁州市| 丹东市| 皮山县| 凯里市| 札达县| 年辖:市辖区| 九江县| 沂南县| 开江县| 孟州市| 宜兴市| 沧源| 临泽县| 祁阳县| 湟中县| 宽城| 大荔县| 怀远县| 湖口县| 长垣县| 北海市| 前郭尔| 闻喜县| 柘荣县| 驻马店市| 葫芦岛市| 长泰县| 宜黄县| 电白县| 米易县| 五华县| 天祝| 新乐市| 保山市| 宜都市| 凤城市| 六枝特区| 富蕴县| 承德市| 乌拉特中旗|