Итак, я создаю свое портфолио, и теперь я на последней странице, странице контактов. Я почти закончил. Я подключил его к электронной почте js, и я получаю электронные письма с сообщением, введенным, как ожидалось.
Проблема, с которой я столкнулся, заключается в том, что когда форма отправлена, я не знаю, как очистить Поля ввода пользовательского интерфейса. Я мог бы игнорировать использование e.preventDefault (), однако я хотел бы сохранить это, поскольку я хочу стилизовать страницу, если желаемый результат был достигнут (сообщение отправлено) или если произошла ошибка. Я хотел бы упомянуть, что я заранее использовал состояние для имени, адреса электронной почты и сообщения, однако я не смог использовать переменные состояния в сочетании с синтаксисом электронной почты js, а точнее, с разделом «e.target» . Когда форма отправлена, результатом будет сообщение, отправленное на мою электронную почту, при этом текст, введенный пользователем, все еще находится в полях ввода.
Код ниже, с некоторыми именами, оставленными скрытыми по соображениям конфиденциальности :
import React, { useState } from 'react'
import { Box, Grid, Typography, Button} from '@material-ui/core'
import Navbar from './Navbar';
import Styles, { InputField } from './Styles'
import SendIcon from '@material-ui/icons/Send'
import emailjs from 'emailjs-com'
function Contact() {
const classes = Styles()
function sendEmail(e) {
e.preventDefault()
emailjs.sendForm('gmail', 'hidden', e.target, 'hidden')
.then((result) => {
console.log(result.text);
result.text ==="OK" ? console.log("it worked") : console.log("didnt work")
}, (error) => {
console.log(error.text);
});
}
return (
<Box component='div'>
<Navbar/>
<Grid container justify='center'>
<Box component='form' className={classes.contactContainer} onSubmit={sendEmail}>
<Typography variant='h5' className={classes.contactHead}>Contact Me</Typography>
<InputField
id="name"
name="name"
fullWidth={true}
label="Name"
variant="outlined"
margin='dense'
size='medium'
/>
<br/>
<InputField
id="email"
name="email"
fullWidth={true}
label="Email"
variant="outlined"
margin='dense'
size='medium'
/>
<br/>
<InputField
id="message"
name="message"
fullWidth={true}
label="Enter Message Here"
multiline
rows={8}
variant="outlined"
margin='dense'
size='medium'
/>
<br/>
<Button
type="submit"
variant='outlined'
fullWidth={true}
endIcon={<SendIcon/>}
className={classes.contactButton}>
Contact Me
</Button>
</Box>
</Grid>
</Box>
)
}
export default Contact