1

我正在使用 TextInput,我希望 TextInput 中的第一个符号保持不变。因此,如果文本的长度是一个符号,我可以忽略退格,并且可以忽略 onChangeText 事件。以下代码不起作用,无论如何都会发生 onChangeText 事件。请问,有什么解决办法吗?

<Input 
 onChangeText = { (text) => onTextChange(text) }
 onKeyPress = { (e) => { 
   if(e.nativeEvent.key === 'Backspace') {
      e.preventDefault(); 
      e.stopPropagation();
   }
 } } 
/>
4

2 回答 2

0

你可以试试这个:

<TextInput
   onKeyPress={({ nativeEvent }) => {
      if(nativeEvent.key === 'Backspace'){
         //It was a backspace
      }
   }}
/>

我想你只是忘记了.key之后nativeEvent

于 2020-04-27T13:51:09.363 回答
0

我想您可以尝试为文本输入设置锁定并将其传递给文本输入的可编辑属性。当触发 onKeyPress 时,当键为退格时锁定文本输入,否则释放锁定。一个例子是:

const [inputLock, setInputLock] = useState(false);
.......
<TextInput
onKeyPress={({ nativeEvent }) => {
              if (nativeEvent.key === "Backspace") {
                setInputLock(true);
              } else {
                setInputLock(false);
              }
            }}
editable={!inputLock}
..../>
于 2020-07-24T04:49:30.883 回答