You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React开发NFT铸造页面时特定模型偶发加载失败需重渲染问题求助

问题根因

你遇到的渲染异常本质是React状态更新规则问题:

  • 你声明model状态时只获取了状态值,没有绑定对应的状态更新方法,直接修改model的属性或重新赋值变量,React无法检测到这部分变更,自然不会主动触发重渲染
  • 只有你点击按钮修改mintAmount等其他绑定了更新方法的状态时,才会触发组件重渲染,此时页面才会读取你已经修改完成的model值,所以会出现点击后数据才正常显示的情况
修复方案

按以下步骤修改MintPage.js代码即可:

  1. 修改model的状态声明,补充状态更新方法
// 原代码:let [model] = useState(jsonModel);
// 替换为:
const [model, setModel] = useState(jsonModel);
  1. 修改setNFTModel方法,避免直接修改原状态,返回全新的状态对象
function setNFTModel(jsonObj) {
  return {
    dna: jsonObj.dna,
    name: jsonObj.name,
    edition: jsonObj.edition,
    attributes: [...jsonObj.attributes]
  }
}
  1. 修改请求回调逻辑,调用setModel主动触发状态更新和重渲染
x.onload = function () {
  const newModel = setNFTModel(JSON.parse(x.responseText));
  setModel(newModel);
  console.log(newModel);
};
可选优化点
  • 给useEffect补充清理逻辑,移除chainChanged、accountsChanged的事件监听,避免页面切换后出现内存泄漏
  • 可以把XMLHttpRequest替换为fetchAPI,代码更简洁易维护
  • 不要直接修改导入的jsonModel常量,避免全局污染

内容的提问来源于stack exchange,提问作者Molly Hatchet

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 21:45:03