除了讓用戶單擊文本框之外,如何在 React Native 中按下鍵?我認為 onKeyPress 和 onKeyDown 函式可能會根據此檔案作業,但它會給出型別錯誤(見下文)
import { View } from 'react-native'
<View onKeyDown={handleKeyDown}></View>
型別錯誤:
Property 'onKeyDown' does not exist on type 'IntrinsicAttributes & InterfaceViewProps & RefAttributes<unknown>'
window.addEventListener('keydown')也不適用于 android 或 IOS,這在沒有瀏覽器的情況下是有意義的。
我也看過這個答案,但它需要一個 3rd 方包。我想 React Native 應用程式支持鍵盤輸入以實作可訪問性目的。
uj5u.com熱心網友回復:
您需要使用TextInput組件來處理此類事件。您可以在此處找到 API:https ://reactnative.dev/docs/textinput 。
請記住,react 庫是作為 API 構建的,因此它可以利用不同的渲染。但問題是,當使用移動原生渲染器時,您不會擁有 Web 視圖上的 DOM 屬性,這是完全不同的。
uj5u.com熱心網友回復:
我不確定 View 組件,但對于 TextInput 這可能有效!
<TextInput
onKeyPress={handleKeyDown}
placeholder="Sample Text"
/>
對于功能部分:
const handleKeyDown = (e) => {
if(e.nativeEvent.key == "Enter"){
dismissKeyboard();
}
}
uj5u.com熱心網友回復:
好吧,這不是最優雅的方式,但它完全按照您的意愿行事:
import { Keyboard, TextInput } from 'react-native';
<TextInput autoFocus onFocus={() => Keyboard.dismiss()} />
鍵盤按鍵事件偵聽器現在將在不顯示鍵盤的情況下獲得按鍵。希望這可以幫助。
uj5u.com熱心網友回復:
我相信您指focus的是頁面加載時的輸入?在這種情況下,您可以將 ref 存盤到 TextInput 并useEffect()呼叫 ref.current?.focus();
在這里我真的不能做 React Native 代碼,但我會在這里做一些未經測驗的代碼供大家參考:
(取決于你如何設定它,你也可以autoFocus在 react-native 中使用默認 TextInput 組件上的道具)
import React, { useEffect, useRef } from 'react';
import { TextInput, View } from 'react-native';
const Input = () => {
// create ref
const inputRef = useRef(null)
useEffect(() => {
// run focus on mount (empty dep array in useEffect)
inputRef.current?.focus()
}, [])
return (
<View>
<TextInput ref={inputRef} {...props} />
</View>
}
檔案:https ://reactnative.dev/docs/textinput
uj5u.com熱心網友回復:
首先,您添加onKeyDown={keyDownHandler}到一個 React 元素。keyDownHandler每次按下鍵時,這將觸發您的功能。前任:
<div className='example-class' onKeyDown={keyDownHandler}>
您可以像這樣設定您的功能:
const keyDownHandler = (
event: React.KeyboardEvent<HTMLDivElement>
) => {
if (event.code === 'ArrowDown') {
// do something
} else if (event.code === 'A') {
// do something
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/493084.html
上一篇:使用firebase身份驗證時createUserWithEmailAndPassword失敗錯誤和AsyncStorage警告
