【发布时间】:2021-04-06 21:51:25
【问题描述】:
我有一个带有文本区域的聊天组件,允许在按下“输入”键时发送消息。它可以工作,但 textarea 没有完全重置。它的值是空的,但是有一个新的空行,这妨碍了占位符的显示。
代码如下:
const [newMessage, setNewMessage] = useState("");
const onSendMessage = () => {
if (newMessage.length > 1) {
onSend(newMessage);
setIsWritting(false);
setNewMessage("");
}
return undefined;
};
const onPressEnter = ({ key }) => {
if (key === "Enter") {
onSendMessage();
return false;
}
};
useEffect(() => {
document.addEventListener("keydown", onPressEnter);
return () => document.removeEventListener("keydown", onPressEnter);
}, [onPressEnter]);
我基于此线程在onPressEnter 中写了return false:Clear textarea input after enter key press。我也尝试添加事件以阻止添加新空行的默认行为,但到目前为止没有成功。
如何解决这个问题?
还有没有办法只听“输入”keydown 事件而不是全局听所有键?
【问题讨论】: