Anybody know why its not updating state and rendering my conditional html? Main goal is to fetch data, when successful, filter for data missing a certain property, fix missing data, then setLoading to false as everything needed has been fetched. Its weird because after waiting a little bit of time, going back to vscode and commenting out setNFTsLoading(false) in the useEffect area, saving, then uncommenting actually updates as intended...
const [NFTs, setNFTs] = useState();
const [NFTsLoading, setNFTsLoading] = useState(true);
useEffect(() => {
getNFTBalances({
params: { chain: "rinkeby" },
onSuccess: () => {
const nullMetadatas = data?.result.filter(
(nft) =>
!nft?.metadata ||
nft?.metadata === null ||
nft?.metadata == null ||
nft?.metadata === undefined ||
nft?.metadata == undefined
);
nullMetadatas.map((nft) => {
token?.reSyncMetadata({
chain: "rinkeby",
address: nft.token_address,
token_id: nft.token_id,
flag: "uri",
});
});
setNFTs(data.result);
setNFTsLoading(false);
},
});
}, [NFTsLoading]);
returning HTML
<div className="grid grid-cols-2 justify-evenly gap-y-10 gap-x-2 sm:grid-cols-3 lg:grid-cols-4 2xl:grid-cols-5">
{NFTsLoading === false &&
NFTs?.map(({ metadata, token_id, image }) => (
<NFTCard
key={`${token_id}`}
title={metadata?.name}
img={metadata?.image}
desc={metadata?.description}
/>
))}
</div>
data.result? Please make sure you didn't end up filtering out everything.