表单提交反应后,从textarea中删除文本
一旦用户单击提交,我的表格即将发送电子邮件,但文本仍留在文本区域中。一旦提交表格,我该怎么办才能清除文本方面?
import "./contact.css";
import phone from "../../img/phone.png";
import email from "../../img/email.png";
import github from "../../img/github.png";
import link from "../../img/link.png";
import resume from "../../img/resume.png";
import { useRef, useState } from "react";
import emailjs from "@emailjs/browser";
const Contact = () => {
const formRef = useRef();
const [done, setDone] = useState(false);
const handleSubmit = (event) => {
event.preventDefault();
emailjs
.sendForm(
"service_fh7vxks",
"template_z5wczcw",
formRef.current,
"mhYkqvVVsQZ1u1ogA"
)
.then(
(result) => {
console.log(result.text);
setDone(true);
},
(error) => {
console.log(error.text);
}
);
};
return (
<div className="c">
<div className="c-bg"></div>
<div className="c-wrapper">
<div className="c-left">
<h1 className="c-title">Let's talk</h1>
<div className="c-info">
<div className="c-info-item">
<img src={phone} alt="" className="c-icon" />
+61 490 522 328
</div>
<div className="c-info-item">
<img src={email} alt="" className="c-icon" />
</div>
<div className="c-info-item">
<img src={resume} alt="" className="c-icon" />
CV
</div>
<div className="c-info-item">
<img src={github} alt="" className="c-icon" />
</div>
<div className="c-info-item">
<img src={link} alt="" className="c-icon" />
linkedin.com/in/tobias-bedford
</a>
</div>
</div>
</div>
<div className="c-right">
<p className="c-description">
<b>Who are you?</b> Lorem ipsum dolor sit amet consectetur
adipisicing elit. Vel provident ex quis adipisci quidem magni hic
eos quae deleniti dignissimos sequi rerum nam atque reprehenderit
et, odio ad? Aliquam, repellat.
</p>
<form ref={formRef} onSubmit={handleSubmit}>
<input type="text" placeholder="name" name="user_name" />
<input type="text" placeholder="subject" name="user_subject" />
<input type="text" placeholder="email" name="user_email" />
<textarea rows="5" placeholder="message" name="message"></textarea>
<button>Submit</button>
{done && "Thank you..."}
</form>
</div>
</div>
</div>
);
};
export default Contact;
我相信通过使用setState()可能是有可能的,但是尽管可能有一种更简单的方法。任何帮助将不胜感激。
I have a form that is sending an email once user has clicked submit but the text is still staying in the text area. What can I do to clear the textarea once form has been submitted?
import "./contact.css";
import phone from "../../img/phone.png";
import email from "../../img/email.png";
import github from "../../img/github.png";
import link from "../../img/link.png";
import resume from "../../img/resume.png";
import { useRef, useState } from "react";
import emailjs from "@emailjs/browser";
const Contact = () => {
const formRef = useRef();
const [done, setDone] = useState(false);
const handleSubmit = (event) => {
event.preventDefault();
emailjs
.sendForm(
"service_fh7vxks",
"template_z5wczcw",
formRef.current,
"mhYkqvVVsQZ1u1ogA"
)
.then(
(result) => {
console.log(result.text);
setDone(true);
},
(error) => {
console.log(error.text);
}
);
};
return (
<div className="c">
<div className="c-bg"></div>
<div className="c-wrapper">
<div className="c-left">
<h1 className="c-title">Let's talk</h1>
<div className="c-info">
<div className="c-info-item">
<img src={phone} alt="" className="c-icon" />
+61 490 522 328
</div>
<div className="c-info-item">
<img src={email} alt="" className="c-icon" />
</div>
<div className="c-info-item">
<img src={resume} alt="" className="c-icon" />
CV
</div>
<div className="c-info-item">
<img src={github} alt="" className="c-icon" />
</div>
<div className="c-info-item">
<img src={link} alt="" className="c-icon" />
linkedin.com/in/tobias-bedford
</a>
</div>
</div>
</div>
<div className="c-right">
<p className="c-description">
<b>Who are you?</b> Lorem ipsum dolor sit amet consectetur
adipisicing elit. Vel provident ex quis adipisci quidem magni hic
eos quae deleniti dignissimos sequi rerum nam atque reprehenderit
et, odio ad? Aliquam, repellat.
</p>
<form ref={formRef} onSubmit={handleSubmit}>
<input type="text" placeholder="name" name="user_name" />
<input type="text" placeholder="subject" name="user_subject" />
<input type="text" placeholder="email" name="user_email" />
<textarea rows="5" placeholder="message" name="message"></textarea>
<button>Submit</button>
{done && "Thank you..."}
</form>
</div>
</div>
</div>
);
};
export default Contact;
I believe it could be possible through using setstate(), but though there is maybe an easier way built into React. Any help would be greatly appreciated.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
确实,我将使用
usestate
为此。您可以使用默认消息保存声明值,使用onChange
处理程序更新值,然后在提交表单后将其清除。Indeed, I would use
useState
for this. You can save a declare the value with a default message, use anonChange
handler to update the value, then clear it after you submit the form.您可以为表格设置ID并在提交成功的同时将其重置,
如果仅清楚textarea和其他保留,您可以尝试为文本区域设置ID,并在您的提交功能中进行以下操作
You may set a id for your form and reset it while submit success
if only clear for textarea and other remain you may try to set id for text area and do below in your submit function