【发布时间】:2022-01-10 13:24:48
【问题描述】:
我有一个简单的反应组件,它从 API 获取数据(在 UseEffect 中调用的获取),并使用 HTML 显示它。当我刷新页面时,所有 html 都会从页面中消失并且变为空白。奇怪的是,当我改为在代码编辑器中进行一些更改并在保存后让 react 自动更新页面时,它显示的一切都很好。
这是组件的代码 sn-p:
export function AgentCard(props){
console.log("agentcard function");
const [agentData,setAgentData] = useState({});
useEffect(()=> {
console.log('running useEffect')
axios.get('https://valorant-api.com/v1/agents/').then(res=>{
var agentRes;
for (const agent of res.data['data']){
if (agent['displayName'] === props.agentName){ agentRes = agent}
}
setAgentData(agentRes);
console.log(agentData)
})
},[])
return(
<div className='AgentCard'>
<h2>{agentData['displayName']}</h2>
<img src={agentData['displayIcon']}></img>
<div className='AgentCardBody'>
<div className='AbilitiesBar'>
<img src={agentData['abilities'][0]['displayIcon']} className='AbilitiesIcon'></img>
<img src={agentData['abilities'][1]['displayIcon']} className='AbilitiesIcon'></img>
<img src={agentData['abilities'][2]['displayIcon']} className='AbilitiesIcon'></img>
<img src={agentData['abilities'][3]['displayIcon']} className='AbilitiesIcon'></img>
</div>
</div>
</div>
)
经过一番挖掘和记录,我发现当我刷新页面时,状态(agentData)被保存到这个:
并在控制台中得到以下错误:
但一旦我对编辑器进行任何更改并让反应自动刷新,日志显示状态 agentData 具有从 API 中提取的正确数据对象。
另外,只有当我运行以下部分代码时才会发生这种情况
<img src={agentData['abilities'][0]['displayIcon']} className='AbilitiesIcon'></img>
<img src={agentData['abilities'][1]['displayIcon']} className='AbilitiesIcon'></img>
<img src={agentData['abilities'][2]['displayIcon']} className='AbilitiesIcon'></img>
<img src={agentData['abilities'][3]['displayIcon']} className='AbilitiesIcon'></img>
一旦我将其注释掉,即使在浏览器刷新后一切都会正确显示
我知道我提出问题的方式令人困惑,但我是前端开发的新手,并不真正知道我应该在这里寻找什么。
【问题讨论】: