我已經建立了 NFT 質押網站,它作業正常,除了我在質押或取消質押時強制顯示影像更新。這是因為使用moralis 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);
}
我認為應該有更方便的方法來解決這個問題。如果您知道,請隨時回答或與我討論。
uj5u.com熱心網友回復:
我認為opensea改變NFT資產的所有者需要一些時間。而且,opensea api和moralis api我都用過,但是opensea api用的時間比較長,而且我無法立即更新前端影像。
我認為當你像這樣取消抵押時,強制更新(添加)帶有 redux 狀態變數的未抵押影像的影像是最好的方法。但這只是我的意見。
- 減速機
case "nft_unstakeBalance":
return({
...state,
nft_unstakeBalance : action.payload
})
在前端
nft_unstakeBalance.map((value, index) => { token_ids = 'token_ids=' value "&"; });
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/416312.html
標籤:
上一篇:將資料從類組件傳遞到功能組件
