1. react-share 패키지 설치:
npm install react-share
2.컴포넌트 파일에서 공유 버튼 및 아이콘 가져오기:
"use client"; import { FacebookShareButton, TwitterShareButton, WhatsappShareButton, EmailShareButton, FacebookIcon, TwitterIcon, WhatsappIcon, EmailIcon } from "react-share";
3.공유할 URL 설정:
const shareUrl = `${process.env.NEXT_PUBLIC_DOMAIN}/properties/${property._id}`
4.기존 버튼 제거 후 새로운 공유 버튼 추가:
return ( <> <h3 className="text-xl font-bold text-center pt-2">Share this property</h3> <div className="flex gap-3 justify-center pb-5"> <FacebookShareButton url={shareUrl} quote={property.name} hashtag={`#${property.type.replace(/\s/g, "")}forrent`}> <FacebookIcon size={40} round /> </FacebookShareButton> <TwitterShareButton url={shareUrl} title={property.name} hashtags={[`${property.type.replace(/\s/g, "")}forrent`]}> <TwitterIcon size={40} round /> </TwitterShareButton> <WhatsappShareButton url={shareUrl} title={property.name} separator=":: "> <WhatsappIcon size={40} round /> </WhatsappShareButton> <EmailShareButton url={shareUrl} subject={property.name} body={`Check out this property listing: ${shareUrl}`}> <EmailIcon size={40} round /> </EmailShareButton> </div> </> );
공유 버튼 별로 설정:
- Facebook: url, quote, hashtag
- Twitter: url, title, hashtags
- Whatsapp: url, title, separator
- Email: url, subject, body
프로젝트 실행 후 확인:
- Facebook 공유는 실제 배포 환경에서만 작동할 수 있습니다.
- Twitter, Whatsapp, Email 공유 버튼은 즉시 확인할 수 있습니다.
샘플
ShareButtons.tsx
"use client"; import React from "react"; import { PropertyCardProps } from "./PropertyCard"; import { FacebookShareButton, TwitterShareButton, WhatsappShareButton, EmailShareButton, FacebookIcon, TwitterIcon, WhatsappIcon, EmailIcon } from 'react-share' const ShareButtons: React.FC<PropertyCardProps> = ({ property }) => { const shareUrl = `${process.env.NEXTAUTH_URL}/properties/${property._id}`; const shareTitle = property.name; const shareDescription = property.description; const shareRate = property.rates.monthly ? `월세: ${property.rates.monthly.toLocaleString()}원` : property.rates.weekly ? `주간: ${property.rates.weekly.toLocaleString()}원` : `일간: ${property.rates.nightly.toLocaleString()}원`; const message = `${shareTitle} - ${shareDescription}\n${shareRate}\n자세한 정보는 링크를 확인하세요:`; return ( <> <h3 className="text-xl font-bold text-center pt-2">부동산 공유</h3> <div className="flex gap-3 justify-center pb-5"> <FacebookShareButton url={shareUrl} title={message} hashtag={`#${property.type.replace(/\s/g, '')}ForRent`} > <FacebookIcon size={40} round={true} /> </FacebookShareButton> <TwitterShareButton url={shareUrl} title={shareTitle} hashtags={[`#${property.type.replace(/\s/g, '')}ForRent`]}> <TwitterIcon size={40} round={true} /> </TwitterShareButton> <WhatsappShareButton url={shareUrl} title={shareTitle} separator="::"> <WhatsappIcon size={40} round={true} /> </WhatsappShareButton> <EmailShareButton url={shareUrl} subject={shareTitle} body={`부동산 공유 : ${shareUrl}`}> <EmailIcon size={40} round={true} /> </EmailShareButton> </div> {/* <button className="bg-orange-500 hover:bg-orange-600 text-white font-bold w-full py-2 px-4 rounded-full flex items-center justify-center"> <i className="fas fa-share mr-2"></i> 부동산 공유 </button> */} </> ); }; export default ShareButtons;
댓글 ( 0)
댓글 남기기