Ошибка добавления Emoji в TextInput для React-Native на iOS - PullRequest
0 голосов
/ 13 марта 2020

У меня возникла проблема с maxLength на <TextInput/> в ReactNative, и я почти уверен, что это происходит только на 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 });
    };
    

    , но это решение, похоже, вызывает мерцание, которое мы все ненавидим этими типами решений.

Мне интересно, сталкивался ли кто-нибудь с этим раньше и мог бы найти более красноречивое решение? Спасибо за помощь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...