React Native 中实现TextInput 默认粘贴纯文本

今天在发现React Native TextInput中粘贴公众号的标题时,粘贴后文字特别大,似乎把格式一起粘贴过来了。

发现在粘贴文本的时候,系统会提示粘贴纯文本还是带格式的文本,我的安卓上默认是带格式的文本,这对普通input 很不友好。查了一圈资料,以及问了chatgpt , 都没有给出一个优雅可行的方案。

后来突然发现@react-native-clipboard/clipboard 中可以读取和写入剪切板,但是也没提供清除格式相关的接口,默认就是字符串。

于是灵机一动,如果一进入APP,就读取剪切板文字,在写回去,是不是就变成纯文本了?试了一下还真是,记录一下。

似乎刚进入可能读不到,加个延时,一般到粘贴的时候至少也要1s 吧。

import Clipboard from '@react-native-clipboard/clipboard';

function App(): JSX.Element {
  useEffect(() => {
    const subscription = AppState.addEventListener('change', nextAppState => {
      if (nextAppState === 'active') {
        console.log('App has come to the foreground!!');
        setTimeout(async () => {
          const text = await Clipboard.getString();
          if (text) {
            Clipboard.setString(text);
          }
        }, 1000);
      }
    });
    return () => {
      subscription.remove();
    };
  }, []);
  return <Main/>
}

Leave a Comment

邮箱地址不会被公开。 必填项已用*标注