【React】ブログにSNSシェアボタンを作る。
2023/1/9
2023/1/16
このブログにSNSシェアボタンを設置したかったので、調べた方法まとめておこうと思います。
今回はReactで利用できる「react-share」というライブラリを使用して作成していきます。

目次
ライブラリのインストールする
$ npm i react-share
SNSシェアボタンのコンポーネントを作る

import React from "react";
import {
FacebookIcon,
FacebookShareButton,
HatenaIcon,
HatenaShareButton,
TwitterIcon,
TwitterShareButton
} from "react-share";
export default function ShareButtons({url, title}) {
return (
<div>
{/* Twitter */}
<TwitterShareButton url={url} title={title}>
<TwitterIcon size={32} round={true} />
</TwitterShareButton>
{/* Facebook */}
<FacebookShareButton url={url} title={title}>
<FacebookIcon size={32} round={true} />
</FacebookShareButton>
{/* Hatena */}
<HatenaShareButton url={url} title={title}>
<HatenaIcon size={32} round={true} />
</HatenaShareButton>
</div>
)
}
コンポーネントのurl
にはシェアされるURL、title
にはシェアされるテキストがそれぞれ記載されます。
またhashtags
でハッシュタグを指定するなどもできます。
Twitterボタン
{/* Twitter */}
<TwitterShareButton url={url} title={title}>
<TwitterIcon size={32} round={true} />
</TwitterShareButton>
Facebookボタン
{/* Facebook */}
<FacebookShareButton url={url} title={title}>
<FacebookIcon size={32} round={true} />
</FacebookShareButton>
はてなブックマークボタン
{/* Hatena */}
<HatenaShareButton url={url} title={title}>
<HatenaIcon size={32} round={true} />
</HatenaShareButton>
Icons(SNSのアイコン)
おまけ:Tailwind CSSのボタンデザイン例

export default function SnsShareButtons({url, title}: Props) {
return (
<div className="flex gap-2">
{/* Twitter */}
<div className={"w-1/2 bg-[#00aced] rounded-lg"}>
<TwitterShareButton url={url} title={title} className={"w-full"}>
<div className="flex items-center justify-center py-4">
<TwitterIcon size={40} round={false} />
<div className="text-white">Twitterでシェアする</div>
</div>
</TwitterShareButton>
</div>
{/* Facebook */}
<div className={"w-1/2 bg-[#3b5998] rounded-lg"}>
<FacebookShareButton url={url} title={title} className={"w-full"}>
<div className="flex items-center justify-center py-4">
<FacebookIcon size={40} round={true} />
<div className="text-white">Facebookでシェアする</div>
</div>
</FacebookShareButton>
</div>
</div>
)
}
まとめ
SNSボタンを想像以上に簡単に実装することができました。
シェアする内容やデザインもカスタマイズもできるので、基本はこのライブラリで十分ですね!
最近の記事

音楽生成AI「Suno」の使い方まとめ!作詞作曲が簡単にできる?
簡単に曲が作れるAIということでよく聞く「Suno(Chirp)」についてまとめました。
目次「Suno」とはテキストからさまざまな音声を生成する「Bark」歌詞から曲を生成する「Chirp」...
2023/11/24
2023/11/24

【Open AI】APIの料金まとめ|GPT・DALL·E・Whisperなど
Open AIのAPI(一部)の料金をまとめました。
参考のために日本円は「1ドル150円」で換算をしています。
目次Text generation: テキスト生成Assistants ...
2023/11/22
2023/11/22

【Next.js】Assistants APIの基本的なコードまとめ。
Open AIの「Assistants API」をNext.jsで使用する時の基本的なコードをまとめました。
目次Open AIのAPIセットアップ基本の使い方Threads: スレッドを作る...
2023/11/21
2023/11/21

【Next.js】Open AIのAPIでファイルをアップロードする方法。
今回は、Next.jsサイトからOpen AIのAPI(Upload file)で、ファイルをアップロードする方法を実装するのに時間がかかったのでその過程と最終コードをまとめます。(Vercelにデ...
2023/11/21
2023/11/22

「生成系AIのWEBプロダクトTOP50」をまとめてみる。
Andreessen Horowitzが出している記事で紹介されている「AIプロダクトの月間訪問者数ランキングTOP50」のサービスをまとめました。
目次ChatGPTcharacter.ai...
2023/10/3
2023/10/3

【Next.js 13】NextAuth+FireStoreにユーザー情報を保存する。
今回は、以下の3つをNext.js 13で実装するためのメモです。
Googleアカウントでログインできる
アカウント、セッション情報をFirestoreに保存する
サーバーサイ...
2023/7/12
2023/7/12