thirdwebのfront実装の小ネタ
thirdwebでNFTDropを使ったフロントエンド実装時に、 ユーザーにMINTする時のETHの価格を表示する方法は下記の通り。
import { useNFTDrop } from '@thirdweb-dev/react'
import { ethers } from 'ethers'
import { useEffect, useState } from 'react'
const Component: React.FC = () => {
const nftDrop = useNFTDrop('<Your NFTDrop Address>')
const [mintPrice, setMintPrice] = useState<string>('')
useEffect(() => {
nftDrop?.claimConditions.getActive().then((activeClaimCondition) => {
setMintPrice(ethers.utils.formatUnits(activeClaimCondition.price._hex))
})
}, [])
return <>{mintPrice}ETH</>
}
目次
解説
claim phase
NFTDropで作成したClaimPhasesで設定した、MINT条件を指す。
nftDrop?.claimConditions.getActive()
https://portal.thirdweb.com/typescript/sdk.dropclaimconditions.getactive
Metamaskを起動している自分のウォレットに対して、現在有効なclaimableな条件を取得する
ethers.utils.formatUnits(activeClaimCondition.price._hex)
_hexのパラメータはそのままだと人間には読めない文字列なので、 ethersのformatUnitsを利用して、ETH単位に変換する。
ethers Display Logic and Input https://docs.ethers.io/v5/api/utils/display-logic/#unit-conversion (ethersはethereumのjsライブラリ。thirdwebSDK利用には必須なため、インストールしているはず。)


