【发布时间】:2020-09-13 17:06:46
【问题描述】:
我有以下代码,我在其中进行 REST 调用并将结果分配给变量。
然后我使用结果来映射并使用道具创建组件。
但目前它会抛出错误,因为列表的值未定义。
我相信这是因为当我尝试映射时,由于 axios 异步调用尚未完成,列表的值尚未设置。
因此 2 个查询。
我应该如何使用响应值。我将其分配给变量“列表”的方法是正确的还是应该以不同的方式完成?
如何等待列表被填充然后映射它?
您可以通过查看以下端点来查看 response.data 的外观:https://sampledata.free.beeceptor.com/data1
响应数据示例:
[
{
"word": "Word of the Day",
"benevolent": "be nev o lent",
"adjective": "adjective",
"quote": "well meaning and kindly.<br/>a benevolent smile",
"learn": "LEARN MORE"
},
{
"word": "Word of the Day",
"benevolent": "be nev o lent",
"adjective": "adjective",
"quote": "well meaning and kindly.<br/>a benevolent smile",
"learn": "LEARN MORE"
}
]
客户端代码:
const App = () => {
// const cardData = useSelector(state => state.cardData)
let list;
useEffect(() => {
axios.get('https://sampledata.free.beeceptor.com/data1')
.then(response => {
list = response.data;
list.forEach(l => console.log(l))
})
.catch(error => {
console.log(error)
})
}, [])
return (
<>
<ButtonAppBar/>
<div className='container'>
<div className='row'>
{
list.map((data) => {
const {word, bene, adj, well, learn} = data;
return (
<div className='col-lg-3 col-md-6 format'>
<SimpleCard word={word} bene={bene} adj={adj} well={well} learn={learn} />
</div>
)
})
}
</div>
</div>
</>
);
}
export default App;
【问题讨论】:
-
阅读
useState。
标签: javascript reactjs axios