reactjs - 数组在函数中检测为空,即使其中有元素
问题描述
我的 React 代码有问题。我想构建一个文章数组,每个文章里面都有一个删除按钮来删除所需的文章。
但在实践中,我的 console.logdeleteDailyStandItem()
总是返回一个空数组。你知道为什么吗?
提前谢谢你,祝你有美好的一天:)
const deleteDailyStandItem = (index, id) => {
console.log(dailyStandItemsDisplayed)
//Delete the article from the DB thanks to the id
}
useEffect(() => {
getDailyStand()
.then(dailyStandDB => {
if(dailyStandDB){
setDailyStand(dailyStandDB)
getDailyStandDetails()
.then(dailyStandItemsDB => {
for(let i = 0; i < dailyStandItemsDB.length; i++){
setDailyStandItemsDisplayed(dailyStandItemsDisplayed => [...dailyStandItemsDisplayed,
<article key={dailyStandItemsDB[i].id}>
<section>
<img src={config.dailystand_detail_pict_url + dailyStandItemsDB[i].pict_url} alt={"illustration"+dailyStandItemsDB[i].id}></img>
</section>
<p>Description : {dailyStandItemsDB[i].description}</p>
<Button onClick={() => {deleteDailyStandItem(i, dailyStandItemsDB[i].id)}}><DeleteIcon /></Button>
</article>])
}
})
}
})
}, [])
编辑 :
我按照你说的做了,效果很好!谢谢 !
解决方案
如果dailyStandItemsDisplayed
是状态变量,您可以将其添加到您的代码中:
useEffect(() => {
console.log(dailyStandItemsDisplayed)
}, [dailyStandItemsDisplayed])
您可以稍微更改您的代码以另一种方式执行此操作:
useEffect(() => {
getDailyStand()
.then(dailyStandDB => {
if(dailyStandDB){
setDailyStand(dailyStandDB)
getDailyStandDetails()
.then(dailyStandItemsDB => {
//Check here if `dailyStandItemsDB` is a list/array
setDailyStandItemsDisplayed(dailyStandItemsDB)
})
}
})
}, [])
接着:
return (
<>
{
dailyStandItemsDisplayed.map((dailyStandItemsDB) => {
return <article key={dailyStandItemsDB.id}>
<section>
<img src={config.dailystand_detail_pict_url + dailyStandItemsDB.pict_url} alt={"illustration"+dailyStandItemsDB.id}></img>
</section>
<p>Description : {dailyStandItemsDB.description}</p>
<Button onClick={() => {deleteDailyStandItem(i, dailyStandItemsDB.id)}}><DeleteIcon /></Button>
</article>
})
}
</>
);
推荐阅读
- java - (Java) 我的十六进制解密方法只能解码第一个十六进制值而不是完整的字符串
- image - 当视频加载如此之快时,为什么一些大分辨率图像需要这么长时间才能加载?
- d3.js - D3如何将数据与轴对齐?
- php - 我的友好 URL 的模式有问题
- reactjs - 为什么将 toFixed() 添加到一个变量在这个反应场景中不起作用但在另一个场景中起作用?
- python - pyaudio安装问题出现命令错误
- python - 连接2个容器,调用python容器并从golang容器执行script.py
- amazon-web-services - 如何在使用 AWS ALB(应用程序负载平衡)的 EC2 实例中运行的 Flask 应用程序上设置 HTTPS (SSL)
- sql - T-SQL 存储过程:更新 IF/ELSE 语句中的局部变量
- http - 后续请求中不包含 HTTP 基本身份验证标头