当我与道德家在NFT赌注网站上下注或取消下注时,我如何立即显示来自opensea api的图像



我已经建立了NFT staking网站,它运行正常,只是我在staking或unstaking时被迫显示图像更新。这是因为使用morals getnftforcontract api和opensea api无法立即更新图像。代码如下。

const get_balanceUrls = async () => {
await Moralis.Web3API.initialize({ apiKey: WEB3APIKEY });
const options = { chain: CHAINETHID, address: walletAddress, token_address: G_ADDRESS, };
let ownedNFTs = await Moralis.Web3API.account.getNFTsForContract(options);
console.log("owning NFTS", ownedNFTs.result);
let stakedNFTs = Object.values(balanceofstakes);
if(ownedNFTs.result.length == 0 && nft_unstakeBalance.length == 0) {
setBalanceImageUrl([]);
return;
}
let token_ids = "";
ownedNFTs.result.map((value, index) => {
if(stakedNFTs.indexOf(value.token_id) < 0) {
token_ids += 'token_ids=' + value.token_id + "&";        
}
})  
nft_unstakeBalance.map((value, index) => {
token_ids += 'token_ids=' + value + "&";
});
if(token_ids == "") {
setBalanceImageUrl([]);
return;
}

console.log("token_ids", token_ids)
let assets = await Axios.get(`${OPENSEA_URL}assets? 
order_direction=desc&offset=0&limit=20&${token_ids}asset_contract_address=${G_ADDRESS}`)
.then(res => {
console.log("balanceurl", res);
return res.data.assets;
})
.catch(err => {
console.log(err);
return [];
});
setBalanceImageUrl(assets);

}

我认为应该有更方便的方法来解决这个问题。如果你知道,请随时回答或与我讨论。

我认为opensea更改NFT资产的所有者需要一些时间。更重要的是,我同时使用了opensea api和morals-api,但使用opensea-api需要更长的时间,而且我无法立即更新前端图像。

我认为当你像这样取消堆叠时,用redux状态变量强制更新(添加(带有未堆叠图像的图像是最好的方法。但这只是我的看法。

-减速器

case "nft_unstakeBalance":
return({
...state,
nft_unstakeBalance : action.payload
})
  • 在前端中

    nft_unstakeBalance.map((value, index) => {
    token_ids += 'token_ids=' + value + "&";
    });
    

最新更新