91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

靖江市| 烟台市| 阿鲁科尔沁旗| 黑水县| 大姚县| 珠海市| 九江市| 南投市| 昭觉县| 安达市| 定日县| 满洲里市| 瑞丽市| 柏乡县| 龙口市| 清水县| 全椒县| 潮安县| 韩城市| 黄龙县| 藁城市| 扎赉特旗| 当涂县| 富裕县| 武川县| 墨玉县| 犍为县| 烟台市| 杭州市| 大兴区| 海晏县| 岳阳县| 连州市| 闸北区| 永寿县| 永新县| 祁连县| 修水县| 新营市| 阆中市| 湘西|