見出し画像

【完全保存版】thirdwebでNFTギャラリーを作ろう!

0 はじめに

今回のコードは、こちらのGithubにあります。

そのため、以下のようにして、簡単に作れます。

1 git cloneを行う

git clone https://github.com/ytakahashi2020/thirdweb_gallery.git

2 yarnを行う

cd thirdweb_gallery 
yarn

3 yarn devを行う

yarn dev

4 ローカルを確認する

では、具体的なコードについても見ていきましょう。

1 アクティブチェーンの設定

まずは、どのブロックチェーンを利用するか設定します。

デフォルトでは「ethereum」になっています。

使用したいチェーンによって「ethereum」の部分を変えてください。

そのチェーンを「ThirdwebProvider」に設定しています。

2 コントラクトの取得

thirdwebでコントラクトを取得するには「useContract」を使います。

コントラクトアドレスは、こちらで設定しています。

今回は、Azukiコントラクトを取得しています。

そのため、下のようになっています。

例えば、BAYCのコントラクトを設定すれば、下のように表示されます。

3 複数のNFTの取得

複数のNFTを取得するには、「useNFTs」を使います。

「count」を指定することで個数を、「start」を指定することでどのトークンIDから始まるかを設定できます。

4 複数のNFTの表示

では、上の章で取得した情報をもとに、NFTを表示させます。

「isLoading」を利用することで、ローディング中であれば表示させないようにします。

また、取得したdatamap関数でそれぞれ処理を行なっています。

こちらが具体的な処理の部分です。

NFTを選択したときに、詳細ページに飛ぶように、「Link」を設定しています。

また、thirdwebでは、NFTを表示させる際には、「ThirdwebNftMedia」を使用します。

その他、NFTのデータについては、「metadata」の中にあります。

5 個別のNFTの表示

ゴールとしては、このように画像、属性、送付履歴を表示させるようにします。

1 個別のNFTの取得

まずは、個別のNFTの取得を行います。

「useNFT」を使用してデータを取得します。

この時、コントラクトアドレストークンIDを渡しています。

2 イベントの取得

次に、「Transfer」のイベントを取得しています。

「userContractEvents」を使います。

今回は、トランスファーの履歴を表示したいため、このように取得しています。

3 画像の表示

画像を表示させるときは、先ほどと同様に、「ThirdwebNftMedia」を使用しています。

4 属性、イベントの表示

属性トランスファーイベントは複数あることが予測されるので、map関数を使っています。

これで以上になります!

最後までありがとうございました。

いいなと思ったら応援しよう!

ユウキ
サポートをしていただけたらすごく嬉しいです😄 いただけたサポートを励みに、これからもコツコツ頑張っていきます😊