在 iOS 上为 React-Native 添加表情符号到 TextInput 时出现问题

Sar*_*lph 5 maxlength textinput ios react-native

maxLength我在 ReactNative中遇到了一个问题<TextInput/>,我很确定它只发生在 iOS 上。

问题:

如果输入的最后一个字符是表情符号,并且该表情符号将您置于maxlength数字上,那么它将删除整个输入!例如,如果maxLength设置为 5 并且输入为“xxxx”(4 个字符),然后添加表情符号,则整个输入文本将被删除。我确信这与表情符号主要是 2 个字符有关,但我似乎找不到“雄辩”的解决方法!

小吃一下,看看我在说什么:

(我只能在 iOS 中复制它) https://snack.expo.io/@sararan/textinput

我尝试过的事情:

  1. 添加一个调用和 的onKeyPress事件(在该事件之前被击中onChangeText)(都是为了更好的措施;))。但它实际上并没有停止事件,我认为这与反应如何处理事件有关,也许这个时候它已经冒泡了?e.stopPropagation()e.preventDefault()
  2. 完全取出maxLength并创建我自己的规则,如果输入超过我想要的长度,则拼接输入,然后替换任何特殊字符,例如......

    const onChangeText = (value) => {
      if (value.length > 5) {
        value = value.slice(0, 30).replace(/[^\w\s]/gi, '');
      }
      setText({ value });
    };
    
    Run Code Online (Sandbox Code Playgroud)

    但这种解决方案似乎会导致我们都讨厌这些类型的解决方案的闪烁。

我想知道是否有人以前遇到过这个问题并且可能有更雄辩的解决方案?感谢您的帮助!