const replayInputRef = useRef(null)
<textarea
className={styles['com-btm-reply-text']}
id='re_input'
ref={replayInputRef}
onKeyDown={replayInputText}
placeholder="Enter發(fā)送,Shift+Enter換行"
autoComplete="off"
autoFocus={true} >
</textarea>
// @ts-ignore
const replayInputText = (e) => {
const replayInputRefCurrent = replayInputRef.current as unknown as HTMLDivElement as any
const replayText = replayInputRefCurrent.value//獲取輸入的值
// enter回車鍵判斷和shit+enter的判斷,因為默認enter有enter+shif的換行功能
if (!e.shiftKey && e.keyCode === 13) {
e.cancelBubble = true; //ie阻止冒泡行為
e.stopPropagation();//Firefox阻止冒泡行為
e.preventDefault(); //取消事件的默認動作*換行
setOnEnter('onEnter')//按下回車鍵onEnter為true
replayInputRefCurrent.value = ''//Enter之后情況輸入的文本
// 將輸入的內(nèi)容push到指定顯示內(nèi)容的位置
setList([
...list,
{
id: list.length + 1,
useId: 'User_10',
time: '2022-10-10 08:00:00',
solve: 'solved',
content: replayText
}
])
}
}
tsx中,如果不使用any的臂聋,就用這第二種方式
// @ts-ignore
const replayInputText = (e) => {
let replayInputRefCurrent = (document.getElementById('re_input') as HTMLInputElement).value; //獲取輸入的值
// enter回車鍵判斷和shit+enter的判斷,因為默認enter有enter+shif的換行功能
if (!e.shiftKey && e.keyCode === 13) {
e.cancelBubble = true; //ie阻止冒泡行為
e.stopPropagation();//Firefox阻止冒泡行為
e.preventDefault(); //取消事件的默認動作*換行
setOnEnter('onEnter');//按下回車鍵onEnter為true
(document.getElementById('re_input') as HTMLInputElement).value = ''
setList([
...list,
{
id: list.length + 1,
useId: 'User_10',
time: '2022-10-10 08:00:00',
solve: 'solved',
content: replayInputRefCurrent
}
])
}
}
在TSX中的用法
const replayInputText = (e: React.KeyboardEvent) => {
const replayInputRefCurrent = (document.getElementById('re_input') as HTMLInputElement).value
// enter回車鍵
if (!e.shiftKey && e.key === 'Enter') {
// e.cancelBubble = true //ie阻止冒泡行為,React.KeyboardEvent不支持
e.stopPropagation() //Firefox阻止冒泡行為
e.preventDefault() //取消事件的默認動作*換行
setOnEnter('onEnter') //按下回車鍵onEnter為true
; (document.getElementById('re_input') as HTMLInputElement).value = '' //Enter發(fā)送成功后清空value
setList([
...list,
{
id: list.length + 1,
useId: 'User_10',
time: '2022-10-10 08:00:00',
solve: 'solved',
content: replayInputRefCurrent
}
])
}
}