Skip to content

Commit

Permalink
update 📱 在钱包中展示NFTs
Browse files Browse the repository at this point in the history
  • Loading branch information
DaviRain-Su committed Aug 16, 2023
1 parent 24e9348 commit 09cd04a
Showing 1 changed file with 15 additions and 15 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ sidebar_class_name: green

# 📱 在钱包中展示NFTs

现在我们已经铸造了一个NFT,我们将学习如何铸造一系列的NFT。我们将使用Candy Machine来完成这个任务,它是一个Solana程序,让创作者能够将他们的资产上链。这不是创建系列的唯一方式,但在Solana上它是标准的,因为它具有许多有用的功能,如机器人保护和安全随机化。你知道怎么回事。模板时间。然而,随着我们构建的东西变得更好,我们的模板也会变得更好。这次我们将在[Solana dApp脚手架](https://github.com/solana-labs/dapp-scaffold)的基础上构建一个模板。和之前的模板一样,它是一个使用 `create-next-app` 制作的Next.js应用程序。不同的是,它有更多的功能。不用担心!我们仍然会使用相同的东西
现在我们已经铸造了一个NFT,接下来我们要探索如何铸造一系列的NFT。我们将使用Candy Machine来完成这项任务,这是一款Solana程序,能让创作者方便地将他们的资产上链。虽然这不是创建系列的唯一方式,但在Solana上它已经成为标准,因为它具有诸如防机器人保护和安全随机化等有用的功能。你懂的,模板时间到了。然而,随着我们构建的项目越来越复杂,我们的模板也会变得更先进。这次我们将基于[Solana dApp脚手架](https://github.com/solana-labs/dapp-scaffold)构建一个模板。与之前的模板一样,它是一个由`create-next-app`创建的Next.js应用程序。不过这次,它具有更多功能。不用担心!我们依然会使用相同的工具

```bash
git clone https://github.com/buildspace/solana-display-nfts-frontend
Expand All @@ -17,13 +17,13 @@ npm i
npm run dev
```

你应该在 `localhost:3000` 上看到这个:
`localhost:3000` 上,你应该能看到如下内容:

![](./img/display-from-wallet.png)

显示NFT”页面目前还没有显示任何内容 - 这就是你的任务所在。
展示NFT”页面目前还没有展示任何内容——这就是你的任务所在。

打开 `src/components/FetchNFT.tsx` ,我们开始吧。我们将从组件顶部的Metaplex设置开始
打开`src/components/FetchNFT.tsx`,让我们开始吧。我们会从组件顶部的Metaplex设置开始

```tsx
export const FetchNft: FC = () => {
Expand All @@ -39,35 +39,35 @@ export const FetchNft: FC = () => {
}
```

看起来很熟悉
看上去似曾相识吧

现在让我们来填写 `fetchNfts` 函数。我们将使用之前看到的 `findAllByOwner` 方法。我们还需要使用 `useWallet` 钩子来获取钱包地址。
现在我们来填写`fetchNfts`函数。我们将使用之前看到的`findAllByOwner`方法,并借助`useWallet`钩子来获取钱包地址。

```tsx
const fetchNfts = async () => {
if (!wallet.connected) {
return
}

// fetch NFTs for connected wallet
// 为连接的钱包获取NFTs
const nfts = await metaplex
.nfts()
.findAllByOwner({ owner: wallet.publicKey })

// fetch off chain metadata for each NFT
// 为每个NFT获取链下元数据
let nftData = []
for (let i = 0; i < nfts.length; i++) {
let fetchResult = await fetch(nfts[i].uri)
let json = await fetchResult.json()
nftData.push(json)
}

// set state
// 设置状态
setNftData(nftData)
}
```

我们想要在钱包更改时更新显示的NFTs,所以我们将在 `useEffect` 函数下方添加一个 `fetchNfts` 钩子来调用 `fetchNfts` 函数。
由于我们希望在钱包更改时更新展示的NFTs,因此我们将在`useEffect`函数下方添加一个钩子来调用`fetchNfts`函数。

```tsx
export const FetchNft: FC = () => {
Expand All @@ -77,7 +77,7 @@ export const FetchNft: FC = () => {
...
}

// fetch nfts when connected wallet changes
// 当连接的钱包改变时获取nfts
useEffect(() => {
fetchNfts()
}, [wallet])
Expand All @@ -86,7 +86,7 @@ export const FetchNft: FC = () => {
}
```

最后,我们需要更新 `return` 语句以显示NFTs。我们将使用之前创建的 `nftData` 状态变量。
最后,我们需要更新`return`语句以展示NFTs。我们将使用之前创建的`nftData`状态变量。

```tsx
return (
Expand All @@ -105,10 +105,10 @@ return (
)
```

我们现在可以看到我们的NFT了!🎉 这是我的钱包长什么样子 😆
现在我们可以看到我们的NFT了!🎉 这就是我的钱包的样子 😆

![](./img/nfts-wallet.png)

回到过去的日子(大约在2021年10月),我不得不手动完成所有这些工作,而且我一直受到RPC的速率限制,所以请花点时间感激Metaplex开发人员为我们带来这个精彩的SDK
回顾过去的日子(大约在2021年10月),那时我不得不手动完成所有这些工作,并且我一直受到RPC的速率限制,所以请花一些时间感谢Metaplex的开发人员为我们带来了这个精彩的SDK

`nftData`这里玩一下。将其记录到控制台并尝试显示其他值,如符号或描述!也许添加一个过滤器,以便用户只能显示特定收藏的NFT
`nftData`上玩一下。将其记录到控制台,并尝试显示其他值,如符号或描述!也许你还可以添加一个过滤器,让用户只能显示特定收藏的NFT

0 comments on commit 09cd04a

Please sign in to comment.