こんにちは、無事デカ学院をご退院したぴくしぃです。
ところで皆さんほわむんしていますか?
おかげさまでほわむんボタンの実装から157日が経ち、約67900回も押されました!!!!!(投稿日現在)
それを記念してほわむんボタンの作り方を解説しようかな♪
ほわむんボタン
準備
まずはAPIを作成します
そして出来たものがこちらです(ほわむん3分クッキング)
GitHub - howamun-day/howamun-api
Contribute to howamun-day/howamun-api development by creating an account on GitHub.
github.com
いちいち解説するのめんどくさくなっちゃった(照)
解説しすぎても技術ブログみたいになっちゃうし
簡単に言うとdeta.spaceっていう無料でDBも使える謎のサービスを使ってほわむんボタンの押された数を保存してます
Deta Space
The cloud for doers and dreamers
deta.space
https://howamunsample-1-f1414439.deta.app/docs
にAPIのドキュメントがあるので詳しく知りたい人は見てみてください
自分で作るのめんどくさかったらこれ使ってください
APIのドキュメント
裏側のAPI部分はこれで完成なので次はボタンを作りましょう!!
ブログ側のエンドポイント作成
ほわむんびよりはAstroで出来てるのでボタンを押した時に叩くエンドポイントを作成
エンドポイント
どんな種類のデータでも提供できるエンドポイントの作成方法について学びます。
docs.astro.build
pages/api/likes.json.ts
にGET
とPUT
のエンドポイントを作成
API_URL
の部分にはdeta.spaceでデプロイしたAPIのURLを入れてね
ボタンの作成
Astroは一部だけReactを使うとか出来るので、ボタン部分はReactで作成しクライアントのみでロードするようにする
データ取得にはSWRっていうライブラリを使います
SWRのSWRMutation
とOptimistic Updatesを使って、ボタンを押したら即座に更新されるようにできるらしい すごいね
Mutation & Revalidation – SWR
SWR is a React Hooks library for data fetching. SWR first returns the data from cache (stale), then sends the fetch request (revalidate), and finally comes with the up-to-date data again.
swr.vercel.app
データの取得
さっき作ったエンドポイント/api/likes.json
にkey
を渡して押された数を取得するのと、PUT
で押された数を増やす
ボタン部分
ボタンを押すたびにランダムなテキストを表示する部分
これで、ボタンを押すたびにランダムにほわっ…とかむんっ!とか表示されるようになる
trigger
のoptimisticData
にlikesを+1増やすようにしたデータを返すことにより、ほぼリアルタイムで更新されるようにみえる お得だね
あとはボタンの見た目をいじってAstro側で
などとしてクライアント側だけでロードするようにしたら完成!!!!!
もっと詳しく知りたかったらキーボードのF12押してHowamun.tsx
を見たらわかるらしい……
いかがでしたか?
普通にお得な情報でどうしよう
次は114514ほわむん目指して頑張るぞ~~!!!
おわりだよ~
P.S.
応用してちょうどいいボタンとイキスギボタンを作りました
この記事がちょうどいいと思ったりイキスギと思ったら押してみてください