lesson-4_フロントエンドを完成させよう
コンポーネントを追加しましょう
フロントエンドが完成に近づいてきました!
このレッスンでは残りのコンポーネントを実装してフロントエンドを完成させましょう。
各コンポーネント作成ごとにUIを確認していくので、Webサイトを立ち上げておくと楽かもしれません。
yarn client dev
📁 components
ディレクトリ
📁 Form
ディレクトリ
ここでは貼り付けるコード量が多いので、 本プロジェクトの packages/client/componentsを参照します。
components/Form
ディレクトリのファイルの内容をコピーしてください。
既にあるファイルの場合は上書きしてください。
Form
に関するフォルダ構成はこのようになっています。
client
└── components
└── Form
├── ListNftForm.module.css
├── ListNftForm.tsx
├── TokenizeForm.module.css
├── TokenizeForm.tsx
├── ViewBuyersForm.module.css
└── ViewBuyersForm.tsx
💁 TokenizeForm.tsx
このコンポーネントは、 農家がNFTを作成する際に触るUI部分を構成します。
コンポーネントのはじめに前sectionで実装したuseContract
を使用しています。
const { assetTokenization } = useContract({ currentAccount });
次に状態変数を用意しています。 農家がNFTを作成するにあたって入力した情報を保存します。
const [farmerName, setFarmerName] = useState("");
const [description, setDescription] = useState("");
const [totalMint, setTotalMint] = useState("");
const [price, setPrice] = useState("");
const [expirationDate, setExpirationDate] = useState("");
onClickGenerateNFT
は、 農家がNFTを作成する際に動かす関数です。
内部でassetTokenization.generateNftContract()
を呼び出しています。
💁 ViewBuyersForm.tsx
このコンポーネントは、 農家が自身の作成したNFTの購入者のアドレスを確認するUIを構成します。
getBuyers
関数内でassetTokenization.getBuyers();
を呼び出し、 返り値であるアドレスの配列を状態変数に格納しています。
💁 ListNftForm.tsx
このコンポーネントは、 デプロイされたNFTのリストの表示と、 購入者がNFTを購入するUIを構成します。
getAllNftDetails
関数内部ではassetTokenization.getNftContractDetails()
を呼び出し、NFTのリストを取得しています。
取得したリストを状態変数allNftDetails
に格納します。
レンダリング時にはリストの要素の数だけmap関数を使用して、 NftDetailsCard
コンポーネント(同じコンポーネント内にあり)を表示しています。
NftDetailsCard
コンポーネント内では、 Buy
ボタンをクリックした場合にonClickBuyNft
を実行し内部ではassetTokenization.buyNft()
を呼び出しています。
🖥️ 画面で確認しましょう
それではAVAX-Asset-Tokenization
ディレクトリ直下で以下のコマンドを実行してください!
yarn client dev
そしてブラウザでhttp://localhost:3000
へアクセスしてください。
はじめにFor Farmer
ボタンをクリックしページを移動します。
Tokenize
タブにてフォームを記入してNFTを作成しましょう。
例)
※ お使いのコンピュータの外観/Appearanceの設定により、 白黒の表示が若干違う可能性があります。ここではDarkモードで確認しています。
generate NFT
ボタンをクッリクしトランザクションにサイン後、 しばらくするとsuccess
のアラートが表示されるはずなのでokをクリックしましょう。
農家としてNFTを作成できました。
ホームページへ戻り、 次はFor Buyers
ボタンをクリックします。
ここで先ほど作成したNFTの情報が表示されるはずです。
Buy
ボタンをクッリクしトランザクションにサイン後、 しばらくするとsuccess
のアラートが表示されるはずなのでokをクリックしましょう。
※ 本来は別アカウントからの購入を想定していますが、 同じアカウントでも問題ありません。
購入者としてNFTの購入が完了しました。
再びホームページへ戻り、 For Farmer
ボタンをクリック -> ViewBuyers
タブをクリックするとNFT購入者のアドレスが表示されます。