javascript - 在 react-native-material-textfield 中检测粘贴事件
问题描述
我想粘贴到 中react-native-material-textfield
,但是根据粘贴的内容做一些事情(即,如果粘贴的内容是链接,则相应地设置它的样式)。但是,为了做到这一点,我需要知道何时将某些内容粘贴到OutlinedTextField
. 我不确定如何收听粘贴事件。剪贴板在这里并没有真正的帮助,因为它所做的一切都是set/get
内容,而不是告诉我是否粘贴了一些任意内容。
最小的示例代码
import Clipboard from '@react-native-community/clipboard';
import {
OutlinedTextField,
} from 'react-native-material-textfield';
export default class App extends React.Component {
handleOnPaste = (content) => {
alert('paste detected! content: '.concat(content));
}
handleOnChangeText = async (content) => {
if (content === '') return;
const copiedContent = await Clipboard.getString();
if (copiedContent === '') return;
const isPasted = content.includes(copiedContent);
if (isPasted) this.handleOnPaste(content);
}
render() {
return (
<View style={styles.container}>
<OutlinedTextField
ref={this.ac_bankRef}
keyboardType='numeric'
autoCapitalize='none'
autoCorrect={false}
enablesReturnKeyAutomatically={false}
onChangeText={this.handleOnChangeText}
returnKeyType='done'
label='Bank(2)*'
maxLength={2}
inputContainerStyle={{height:height>800?48:40,marginTop:10}}
contentInset={{label:1,input:12}}
baseColor={'#D4D4D4'}
lineWidth = {1}
/>
</View>
);
}
}
在上面的示例代码const isPasted = content.includes(copiedContent);
中,使用时总是返回 false,OutlinedTextField
但在TextInput
react native 的正常情况下它工作正常。
请帮我解决问题。谢谢
解决方案
我已通过删除maxLength={2}
. OutlinedTextField
删除属性后,我能够检测到复制粘贴事件。
推荐阅读
- javascript - 如何从Javascript中的十进制数字中删除零
- javascript - Vue-boostrap 卡不显示登机
- css - 如何将导航链接向下移动页面
- .net - 在 .net 框架中更新到 VS 16.5.0 后 HttpContext.Current 为空
- javascript - 未捕获的 TypeError:this.timestamp 不是函数
- javascript - 使用 fetch API 从数组中获取数据的问题
- python - How can I extend file paths for a dictionary
- gitlab - How to Setup GitLab Environment Variables in a safe way?
- node.js - 如何在不使用 NPM 存储库的情况下安装 lerna 包
- c# - EF Core 3.1 查询有时超快但有时很慢