981 B
981 B
title, type, language, tags, author, cover, dateModified
| title | type | language | tags | author | cover | dateModified | |
|---|---|---|---|---|---|---|---|
| Email link | snippet | react |
|
chalarangelo | digital-nomad-4 | 2020-11-16T15:17:26+02:00 |
Renders a link formatted to send an email (mailto: link).
- Use the
email,subjectandbodyprops to create a<a>element with an appropriatehrefattribute. - Use
encodeURIcomponentto safely encode thesubjectandbodyinto the link URL. - Render the link with
childrenas its content.
const Mailto = ({ email, subject = '', body = '', children }) => {
let params = subject || body ? '?' : '';
if (subject) params += `subject=${encodeURIComponent(subject)}`;
if (body) params += `${subject ? '&' : ''}body=${encodeURIComponent(body)}`;
return <a href={`mailto:${email}${params}`}>{children}</a>;
};
ReactDOM.createRoot(document.getElementById('root')).render(
<Mailto email="foo@bar.baz" subject="Hello & Welcome" body="Hello world!">
Mail me!
</Mailto>
);