单击发送消息后如何重置输入字段

Posted

技术标签:

【中文标题】单击发送消息后如何重置输入字段【英文标题】:How do I reset the input field after clicking to send my message 【发布时间】:2021-01-20 22:44:12 【问题描述】:

在聊天应用程序中,我想在单击时重置()我发送消息的输入字段,以便输入字段再次变为空。这就是我所拥有的。

const [message, setMessage] = useState(""); 
const [messages, setMessages] = useState([]); 
const submit = (event) => 
event.preventDefault();
socket.emit("text-message", message);
    ;
<form onSubmit=submit id="form">
    <div className="input-group">
        <input
            name="message"
            maxLength="60"
            type="text"
            placeholder="Message"
            className="form-control"
            onChange=(e) => 
            setMessage(e.currentTarget.value);
              
            value=message
            id="text"
            />
     <button id="send" type="submit" className="btn btn-primary">
        Send
     </button>
  </div>
</form>

【问题讨论】:

提交成功后可以在提交函数中设置消息吗?即setMessage('')。还是您需要更高级的东西? 做到了,比想象的要简单。谢谢 【参考方案1】:

只是我评论的跟进,因此可以将其标记为已回答。我将尝试更详细地解释一下,以便有类似问题的任何人都可能会发现答案更有用。

在输入上使用 value 属性意味着它是“Controlled”。

这意味着您提供给 value 道具的内容将出现在输入中。

因此更改输入中出现的值就像更改用于 value 属性的变量一样简单,在本例中为 message

由于message 是由useState 创建的,因此更新它的正确方法是使用相应的setState 方法,在本例中为setMessage。这已经在上面的 sn-p 中的 onChange 事件 setMessage(e.currentTarget.value); 中使用,以在用户输入数据时处理更新 message

使用添加到用于操作表单的submit 函数末尾的setMessage(''); 可以实现没有特殊逻辑的基本重置。

const submit = (event) => 
    event.preventDefault();
    socket.emit('text-message', message);
    setMessage('');
;

【讨论】:

以上是关于单击发送消息后如何重置输入字段的主要内容,如果未能解决你的问题,请参考以下文章

带有图标的输入字段的Jquery验证发送错误消息

发送消息后保持 textarea 处于活动状态

我们如何使 htmx 响应触发表单重置?

如何将我网站上的表单字段中的输入数据发送到一个不和谐的 webhook,该 webhook 向不和谐的用户发送消息?

从一个活动获取变量到另一个活动

编辑文本后如何重置tableview的高度