TypeError:设置 MetaMask 以显示 NFT 时无法读取未定义的属性(读取“map”)
2022-04-06
2284
当我运行我的代码undured typeError:无法读取未定义的属性(读取'Map')时,我一直在遇到此错误MetAmask帐户我将显示我的代码以显示我的所作所为,如果有人知道如何解决此问题,他们可以发布解决方案代码,因为这将有很大的帮助。
110990442
< hr/>
113124939
因此,当我放入nft.meta.name时,我会不断遇到未知的类型错误,并想知道为什么此错误会持续出现
303607035 <
303607035 < /代码>
2个回答
问题是你像这样定义你的
useState
const [nfts, setNfts] = useState()
所以如果你没有为你的状态定义任何值,那么默认情况下它是
undefined
并且你不能通过
undefined
值进行映射,所以像这样定义你的状态
import { useEffect, useState } from 'react';
import './nft.css';
import NFTContainer from './NFTContainer';
export function Nft() {
const [walletAddress, setWalletAddress] = useState(null);
const [nfts, setNfts] = useState([]);
const connectWallet = async () => {
try {
if (typeof window.ethereum !== 'undefined') {
const accounts = await window.ethereum.request({ method: 'eth_requestAccounts' });
setWalletAddress(accounts[0]);
}
} catch (error) {
console.log('err1==>', error);
}
};
const getNftData = async () => {
try {
if (!walletAddress) return;
const response = await fetch(`https://api.rarible.org/v0.1/items/byOwner/?owner=ETHEREUM:${walletAddress}`);
const data = await response.json();
setNfts(data.items);
} catch (error) {
console.log('err2==>', error);
}
};
useEffect(() => {
getNftData();
}, [walletAddress]);
return (
<div className='Nft'>
<div className='text'>Account: {walletAddress}</div>
<button className='connect-button' onClick={connectWallet}>
{!walletAddress ? 'Connect Wallet' : 'Wallet Connected'}
</button>
<NFTContainer nfts={nfts} />
</div>
);
}
export default Nft;
注意:当 API 从网络或链中获取数据时,也要进行错误处理并显示加载器
Abbas Hussain
2022-04-06
您在此处缺少初始值,
const [nfts, setNfts] = useState([]);
使用
useState()
钩子时必须使用
default
值。如果您想对状态值应用
array.map()
方法,则必须使用空数组
useState([])
声明钩子。
nurmdrafi
2022-04-06