我有一個應用程序,我需要添加一個特殊的字符,表情符號或類似的東西,每次用戶按快捷鍵Ctrl + D。如何使用任何輸入的快捷方式添加特殊字符?
問題是,我使用的是磁通,並有我的網頁上有多個輸入,所以當有人增加了焦炭引入的一個輸入,它會調用一個動作,派遣到商店,他們更新視圖。
要添加此特殊字符我需要處理keyEvent並知道哪些輸入組件正在用來更新存儲中的相應屬性。
handleShortcut(evt) {
if (evt.keyCode === ...) {
MyActions.addSpecialChar();
evt.preventDefault();
}
}
這是唯一的方法嗎?我知道我可以使用document.activeElement
或evt.target
獲取輸入,但由於輸入由商店狀態我改變不了自己的價值...任何想法控制?
** **更新
爲了讓事情更加清楚。我想使我的應用程序表現得像一個「桌面應用程序」,無論在哪個輸入我在我的應用程序是,如果我按下組合鍵,它會在該輸入中放置一個特殊的字符,這意味着它將由onChange處理。 (我不太熟悉React或JS,所以也許我問的太多..)
所以我會有一個onKeyPress在我的高階組件,將處理組合,並將觸發onChange將特殊字符添加到輸入的value
屬性之後的活動輸入。
我做這一點的方法是在每個輸入設置一個onkeypress事件,將尋找組合和發送相同的行動,我的onChange但在文本中的特殊字符。
<input
onKeyPress={(evt)=>{
/* ... Check combination ... */
let text = _addSpecialChar(evt.target.value);
MyActions.update(text);
}}
onChange={(evt)=>{
MyActions.update(evt.target.value);
}}
/>
正如我上面說,我想處理好與的onChange的組合,作爲一個正常的性格讓我沒有添加onkeypress事件上的每個輸入。這可能嗎?
什麼是你的店的狀態是什麼樣子?爲什麼你不能將表情符號傳遞到你的商店狀態? –
@ChaseDeAnda我可以和我做,但我想添加快捷方式,把一個表情符號,就好像一個普通的字符,無論哪個輸入,例如,如果我複製/粘貼它,我可以只使用onChange添加表情符號。我更新了我的問題... – MNV