国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

學習React中ref的兩個demo示例

來源:懂視網 責編:小采 時間:2020-11-27 22:10:03
文檔

學習React中ref的兩個demo示例

學習React中ref的兩個demo示例:為了擺脫繁瑣的Dom操作, React提倡組件化, 組件內部用數據來驅動視圖的方式,來實現各種復雜的業務邏輯 ,然而,當我們為原始Dom綁定事件的時候, 還需要通過組件獲取原始的Dom, 而React也提供了ref為我們解決這個問題. 為什么不能從組件直接獲取Dom?
推薦度:
導讀學習React中ref的兩個demo示例:為了擺脫繁瑣的Dom操作, React提倡組件化, 組件內部用數據來驅動視圖的方式,來實現各種復雜的業務邏輯 ,然而,當我們為原始Dom綁定事件的時候, 還需要通過組件獲取原始的Dom, 而React也提供了ref為我們解決這個問題. 為什么不能從組件直接獲取Dom?

為了擺脫繁瑣的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動畫演示

使用場景

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

實現思路:

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

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

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

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

 

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;

小結:

虛擬Dom雖然能夠提升網頁的性能, 但虛擬 DOM 是拿不到用戶輸入的。為了獲取文本輸入框的一些操作, 還是js原生的事件綁定機制最好用~

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

學習React中ref的兩個demo示例

學習React中ref的兩個demo示例:為了擺脫繁瑣的Dom操作, React提倡組件化, 組件內部用數據來驅動視圖的方式,來實現各種復雜的業務邏輯 ,然而,當我們為原始Dom綁定事件的時候, 還需要通過組件獲取原始的Dom, 而React也提供了ref為我們解決這個問題. 為什么不能從組件直接獲取Dom?
推薦度:
標簽: 實例 demo ref
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 久久se精品一区二区国产 | 国产高清在线看 | 日韩一区二区久久久久久 | 日韩在线欧美高清一区 | 在线观看色视频网站 | 久操精品在线观看 | 久久成人国产精品一区二区 | 国产成人高清亚洲一区91 | 一区二区三区亚洲 | 国产一二三区在线 | 国产亚洲欧美一区二区三区 | 亚洲国产成人久久综合一区 | 国产成人亚洲综合91精品555 | 日本特级淫片免费看 | 一区二区三区免费在线观看 | 萌白酱喷水 | 久久国产午夜一区二区福利 | 国产手机在线αⅴ片无码观看 | 亚洲小色网 | 欧美资源在线观看 | 一区在线播放 | 国产精品一区视频 | 日韩中文欧美 | 国产精品视频一区二区三区 | 亚洲一区二区三区久久精品 | 日本特级淫片免费 | 免费不卡视频 | 国产99视频精品免费观看7 | 人人添人人澡人人澡人人人爽 | 精品国产系列 | 99久久精品免费国产一区二区三区 | 五月婷婷在线视频 | 久久免费看视频 | 视频二区 素人 欧美 日韩 | 国产成人久久精品二区三区 | 亚洲 欧美 日韩在线 | 国产一区二区福利 | 欧日韩一区二区三区 | 夜精品a一区二区三区 | 中国亲与子乱αy | 日韩在线资源 |