日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

React Hooks 實現的中文輸入組件

瀏覽:284日期:2022-06-10 11:19:43
目錄
  • 正文
  • 先等待而不觸發onInput事件
  • 標記等待狀態的方法

正文

在前端開發中,通過監聽 onInput 事件來觸發輸入框內容的更新,是沒有問題的,但如果輸入的內容有中文的時候,會出現類似 zhong'wen'nei'rong這樣的備選內容。

這種內容的影響普遍不會很大,但是當需要對輸入的內容進行一些耗時的操作的時候,這個影響就不得不考慮一下了,比如說內容需要進行復雜的渲染、通過網絡實時發送等等場景。

先等待而不觸發onInput事件

對這種問題的解決方案,需要借助瀏覽器提供的組合輸入事件 。簡單地說,輸入中日韓文等各種包含“選字”環節的文字的時候,會額外觸發兩個事件compositionStartcompositionEnd,監聽并處理這兩個事件,就可以在用戶還未完成選字的時候先等待而不觸發onInput事件:

源自MDN 文檔: compositionstart

如果僅僅需要處理組合輸入的話,使用 compositionEnd 代替 onInput 就可以,但用戶偶爾也需要輸入英文和數字,這些輸入不會觸發 compositionEnd

因此我們需要在 compositionStart 的時候進入等待狀態,等待狀態中間的所有 onInput 一律不處理。而輸入英文和字母的時候,onInput 則正常處理。

標記等待狀態的方法

標記等待狀態的方法比較多,例如useRef

import { useRef, useState } from "react";export function ChineseInput(params){    const { onInput = () => {} } = params;    const lockRef = useRef(false);    // preview 用于預覽,不然都不知道自己打的什么內容    const [preview, setPreview] = useState(value);    // 進入組合輸入狀態    const handleStart = () => {      lockRef.current = true    };    const handleInput = event => {      // 不管狀態如何,總是需要預覽的      setPreview(event.target.value);      // 處于組合輸入狀態,不予處理      if(lockRef.current) return;      // 非組合輸入狀態,觸發 onInput      onInput(event);    };    // 選字結束,觸發 onInput    const handleEnd = event => {      setPreview(event.target.value);      lockRef.current = false;      onInput(event);    };    return (      <input{...params}onCompositionEnd={handleEnd}onCompositionStart={handleStart}onInput={handleInput}      />    )  }

當然這里可以改成一個高階函數或者自定義鉤子,這樣的話就不用單獨給 textArea 也寫一個組件了,不過常見的輸入標簽也就這倆,沒有必要復用。

這兩個事件的兼容性還不錯:

還在用比這更老的瀏覽器的電腦基本可以忽略掉,硬要兼容的話,怕是只有用適當魔改的防抖或者節流函數來代替了。

以上就是React Hooks 實現的中文輸入組件的詳細內容,更多關于React Hooks中文輸入組件的資料請關注其它相關文章!

標簽: JavaScript
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产精品原创| 日韩中文av| 91亚洲无吗| 蜜臀av免费一区二区三区| 一级成人国产| 在线人成日本视频| 久久中文精品| 亚洲精选91| 国产精品综合| 日本精品国产| 国产美女一区| 婷婷六月综合| 国产精品试看| 人人草在线视频| 老鸭窝亚洲一区二区三区| 亚洲高清不卡| 久久精品卡一| 久久青草久久| 在线综合亚洲| 国产亚洲高清视频| 国产精品hd| 蜜桃久久久久| 动漫av一区| 黑丝美女一区二区| 欧美日韩国产综合网| 久久精品国产www456c0m| 黑丝一区二区三区| 亚洲一区区二区| 蜜臀久久99精品久久久画质超高清| 国产精品美女久久久| 日韩一区亚洲二区| 久久精品资源| 99re国产精品| 国产精品久久久久久久免费软件| 99国产一区| 久久婷婷一区| 欧美日韩视频网站| 另类中文字幕国产精品| 国产精品呻吟| 日韩精品一区二区三区中文| 97在线精品| 高清日韩欧美| 少妇久久久久| 成人久久一区| 亚洲免费婷婷| 午夜av一区| 国产亚洲一区| av在线最新| 欧美日韩激情在线一区二区三区| 欧美专区一区二区三区| 亚洲精品观看| 美腿丝袜在线亚洲一区| 欧美va天堂在线| 亚洲欧美在线专区| 伊人久久在线| 久久亚洲欧洲| 国产精品xvideos88| 99精品综合| 亚洲色图国产| 美女久久99| 亚洲午夜精品久久久久久app| 免费成人在线观看| 老司机精品在线| 激情久久久久久久| 欧美亚洲三级| 亚洲网站视频| 欧美日一区二区在线观看| 高清av一区| 7m精品国产导航在线| 麻豆成人综合网| 亚洲欧美日韩高清在线| 欧美1区二区| av不卡在线看| 精品三级在线观看视频| 亚州av一区| 18国产精品| 欧美成人精品| 国产欧美日韩视频在线| av亚洲一区二区三区| 久久99视频| 久久国产66| 国产精品伦理久久久久久| 日韩高清国产一区在线| 久久精品不卡| 麻豆91精品视频| 日韩一区二区三区免费视频| 丝袜美腿一区| 国产伦精品一区二区三区千人斩| 91精品精品| 国产伦精品一区二区三区千人斩| 欧美亚洲激情| 国产日韩欧美一区在线| 国产高清一区| 日韩伦理一区| 国产日产精品_国产精品毛片| 免费观看久久av| 日韩国产一区二区| 91嫩草精品| 六月婷婷一区| 88xx成人免费观看视频库| 久久国产精品免费精品3p| 亚洲一区二区三区久久久| 国产精品二区不卡| 国产亚洲一区二区三区啪| 亚洲日韩中文字幕一区| 精品欧美日韩精品| 日韩中文av| 久久香蕉精品| 国产综合精品| 久久在线免费| 日韩成人a**站| 精品国产鲁一鲁****| 欧美在线看片| 蜜桃av一区二区| 日韩中文字幕亚洲一区二区va在线| 日韩中文影院| 国产成人精品亚洲线观看 | 精品一区二区三区视频在线播放| 日韩欧美久久| 性色av一区二区怡红| 久久国产精品毛片| 亚洲激情中文| 欧美日韩在线网站| 国产综合精品一区| 日韩高清中文字幕一区二区| 久久国产日韩欧美精品| 亚洲毛片在线免费| 久久先锋影音| 色狠狠一区二区三区| 黄色成人91| 99热精品久久| 成人自拍av| 人人草在线视频| 精品国产精品久久一区免费式| 欧美日韩精品免费观看视欧美高清免费大片| 欧美日韩中出| 国产精久久久| 国产精品国码视频| 美女久久99| 免费在线欧美黄色| 麻豆国产欧美一区二区三区| 国产成人精品一区二区免费看京| 麻豆一区二区在线| 麻豆精品在线播放| 国产成人精品亚洲线观看| 欧美激情视频一区二区三区在线播放| 欧美中文一区| 欧美日韩视频免费看| 欧美日韩99| 国产96在线亚洲| 国产成人免费视频网站视频社区| 美女av一区| 欧美日韩尤物久久| 久久九九99| 丝袜亚洲精品中文字幕一区| 天堂成人国产精品一区| 六月天综合网| 国产乱论精品| 精品一区二区三区四区五区| 色综合五月天| 精品91久久久久| 不卡在线一区二区| 水野朝阳av一区二区三区| 日韩中文字幕1| 欧美日韩高清| 国产亚洲毛片| 日韩三级精品| 欧美黄页在线免费观看 | 日产欧产美韩系列久久99| 久久国产精品色av免费看| 日韩综合精品| 亚洲色诱最新| 日韩av黄色在线| 韩国久久久久久| 欧美日韩日本国产亚洲在线| 久久久天天操| 日韩一区二区三免费高清在线观看| 日韩国产高清在线| 激情综合在线| 婷婷成人av| 国产一区国产二区国产三区 | 精品久久影院| 群体交乱之放荡娇妻一区二区| 一区二区电影在线观看| 国产精品成人自拍| 色在线视频观看| 亚洲精品中文字幕99999| 97se亚洲| 国产一区二区三区四区五区 | 久久精品97| 亚洲最新无码中文字幕久久 | 四虎在线精品| 婷婷精品在线| 欧美国产偷国产精品三区| 亚洲欧美日韩高清在线| 国产精品白丝一区二区三区| 精品免费av在线| 亚洲日本在线观看视频| 福利在线免费视频| 午夜在线视频观看日韩17c|