react-shareで作るSNSシェア機能
2021.05.04
2021.05.06
SNSシェア機能をブログに追加したので手順を残したいと思います。
今回はSNSシェア機能を簡単に実装できるライブラリであるreact-shareを使いました。
以下よりインストールできます。
yarn add react-share
npm i react-share
インストールが完了したら、実装したい場所に実装したいものをインポートします。
今回私はTwitterとFacebookのシェア機能を実装したかったため、以下のようにそれぞれのShareButtonとIconをインポートしました。
(TwitterやFacebookの他にLINEなど様々な種類のものを実装できるため詳しくはreact-shareをご確認ください。)
import {
TwitterShareButton,
FacebookShareButton,
TwitterIcon,
FacebookIcon,
} from "react-share";
あとはShareButtonにシェアしたいもののURL等を追加すればOKです。
他にもハッシュタグやIconの簡単なスタイル変更もできるため詳しくはreact-shareを要チェック。
export function SnsShare(props) {
const { url, title } = props;
return (
<div className="text-center">
<ul className="flex justify-end sm:mr-4">
<li className="px-2 sm:hover:opacity-75">
<TwitterShareButton
url={url}
title={title}
>
<TwitterIcon size={32} round />
</TwitterShareButton>
</li>
<li className="px-2 sm:hover:opacity-75">
<FacebookShareButton
url={url}
>
<FacebookIcon size={32} round />
</FacebookShareButton>
</li>
</ul>
</div>
);
}
これで最低限のシェア機能としては完成です。
続いてTwitterシェアに表示される画像やタイトルの設定方法。
設定方法といってもとても簡単で、実装したい場所のheadタグ内にmeta情報を追加するだけです。
私はNext.jsでブログを開発しているため、以下をインポートします。
import Head from "next/head";
あとはHead内にmeta情報の追加。
Twitterに表示される画像の大きさが小さい方が良い場合は content="summary" に。
<Head>
<meta name="twitter:card" content="summary_large_image" />
<meta
property="og:url"
content="URL"
/>
<meta property="og:title" content="タイトル" />
<meta property="og:description" content="説明" />
<meta property="og:image" content="画像URL" />
</Head>
これで完了ですがTwitterに反映されるまで時間がかかります。
もしちゃんと実装できてるかチェックしたい場合は、公式ページ(Card Validator)に記事のURLを入力してチェックしてみて下さい。