先说一下我遇到的得需求,是需要复制粘贴文本然后在textarea中进行换行得,每一行要判断字符不能超过60个。所以就需要在填写得时候把字符推到一个数组里,进行遍历,判断每一项是否超过60个,超过得话就不能输入了。这里用到了三个方法,分别是tostring();split();spliceAll(); join();
const handelChange = (e) => {
e.stopPropagation();
arr = e.target.value.replaceAll("\n", ",").split(',');
arr.forEach((item, index) => {
if (item.length >= 60) {
arr[index] = item.substring(0, 59);
text.current.resizableTextArea.textArea.value = arr.join("\r");
return message.warning("每行不能超过60字符");
};
});
}
<TextArea rows={6} bordered={false} id="textArea" ref={text} onBlur={handelBlur} onKeyDown={debounce(handelChange, 300)}/>
// 如果文本写不上就用ref
const text = useRef(null);
useEffect(() => {
text.current.resizableTextArea.textArea.value = str; // str就是你需要给它赋得值
})
function debounce(fn,delay) {
let timer = null;
return function() {
let context = this,args = arguments;
if(timer) {
clearTimeout(timer);
timer = null;
}
timer = setTimeout(()=> {
fn.apply(context,args)
},delay)
}
};
|