今天在发现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/>
}