亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

React中ref的示例分析

發布時間:2021-08-02 11:19:39 來源:億速云 閱讀:126 作者:小新 欄目:web開發

這篇文章給大家分享的是有關React中ref的示例分析的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

為了擺脫繁瑣的Dom操作, React提倡組件化, 組件內部用數據來驅動視圖的方式,來實現各種復雜的業務邏輯 ,然而,當我們為原始Dom綁定事件的時候, 還需要通過組件獲取原始的Dom, 而React也提供了ref為我們解決這個問題.

為什么不能從組件直接獲取Dom?

組件并不是真實的 DOM 節點,而是存在于內存之中的一種數據結構,叫做虛擬 DOM (virtual DOM)。只有當它插入文檔以后,才會變成真實的 DOM

如果需要從組件獲取真實 DOM 的節點,就要用到官方提供的ref屬性

使用場景

當用戶加載頁面后, 默認聚焦到input框

import React, { Component } from 'react';
import './App.css';

// React組件準確捕捉鍵盤事件的demo

class App extends Component {
 constructor(props) {
  super(props)
  this.state = {
   showTxt: ""
  }

  this.inputRef = React.createRef();
 }

 // 為input綁定事件
 componentDidMount(){
  this.inputRef.current.addEventListener("keydown", (event)=>{
   this.setState({showTxt: event.key})
  })

  // 默認聚焦input輸入框
  this.inputRef.current.focus()
 }

 render() {
  return (
   <div className="app">
    <input ref={this.inputRef}/>
    <p>當前輸入的是: <span>{this.state.showTxt}</span></p>
   </div>
  );
 }
}

export default App;

自動聚焦input動畫演示

React中ref的示例分析

使用場景

為了更好的展示用戶輸入的銀行卡號, 需要每隔四個數字加一個空格

實現思路:

當用戶輸入的字符個數, 可以被5整除時, 額外加一個空格

當用戶刪除數字時,遇到空格, 要移除兩個字符(一個空格, 一個數字),

為了實現以上想法, 必須獲取鍵盤的BackSpace事件, 重寫刪除的邏輯

限制為數字, 隔四位加空格

React中ref的示例分析 

import React, { Component } from 'react';
import './App.css';

// React組件準確捕捉鍵盤事件的demo
class App extends Component {
 constructor(props) {
  super(props)
  this.state = {
   showTxt: ""
  }

  this.inputRef = React.createRef();
  this.changeShowTxt = this.changeShowTxt.bind(this);
 }

 // 為input綁定事件
 componentDidMount(){
  this.inputRef.current.addEventListener("keydown", (event)=>{
   this.changeShowTxt(event);
  });
  // 默認聚焦input輸入框
  this.inputRef.current.focus()
 }

 // 處理鍵盤事件
 changeShowTxt(event){
  // 當輸入刪除鍵時
  if (event.key === "Backspace") {
   // 如果以空格結尾, 刪除兩個字符
   if (this.state.showTxt.endsWith(" ")){
    this.setState({showTxt: this.state.showTxt.substring(0, this.state.showTxt.length-2)})
   // 正常刪除一個字符
   }else{
    this.setState({showTxt: this.state.showTxt.substring(0, this.state.showTxt.length-1)})
   }

  }
  // 當輸入數字時
  if (["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"].includes(event.key)){
   // 如果當前輸入的字符個數取余為0, 則先添加一個空格
   if((this.state.showTxt.length+1)%5 === 0){
    this.setState({showTxt: this.state.showTxt+' '})
   }
   this.setState({showTxt: this.state.showTxt+event.key})
  }
 }

 render() {
  return (
   <div className="app">
    <p>銀行卡號 隔四位加空格 demo</p>
    <input ref={this.inputRef} value={this.state.showTxt}/>
   </div>
  );
 }
}

export default App;

感謝各位的閱讀!關于“React中ref的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

青浦区| 平顶山市| 江永县| 平潭县| 乳山市| 桂林市| 丰城市| 清河县| 隆昌县| 阜阳市| 永和县| 常德市| 手机| 远安县| 门头沟区| 定安县| 马公市| 泸定县| 阜城县| 遂溪县| 堆龙德庆县| 工布江达县| 巴彦淖尔市| 龙里县| 晴隆县| 灵丘县| 新疆| 安阳县| 静海县| 杭州市| 乳山市| 凉城县| 建平县| 嘉峪关市| 临泽县| 黄大仙区| 桃园市| 仁化县| 霍林郭勒市| 平泉县| 安宁市|