javascript - 尝试在数组中映射数组并在表格中显示
问题描述
我的数据库中目前有三个表。我有一个用户、医学和医学详细信息表。它们是这样关联的,med 详细信息属于医学,医学属于用户。
我目前正在使用 sequelized 调用我的数据库并获取用户和属于该用户的嵌套表。在反应中,我需要map
遍历对象中的 Medicine 数组以取回所有药物名称,然后我想map
遍历 med details 数组以获取它们被服用的时间。
<tbody>
{ user.Medicines && user.Medicines.length !== 0 && user.Medicines.map(item => {
console.log(item)
const medDeets = item.MedDeets
const medDeetMap = medDeets.map(deet => {
const time = deet.timeTaken
// setTime(time)
Issue here>? })
return (
<tr>
<td>{item.medicineName}</td>
<td> </td>
<td></td>
<td>{item.waitingPeriod} hours</td>
</tr>
)
// }
})}
</tbody>
如果我尝试})
从我的第二个map
函数中移动(也显示在上面的代码中),我遇到了似乎是范围界定问题,并且无法再看到我的第一个map
函数中的数据。如果我尝试setState
从第二个map
函数开始,我会收到太多的重新渲染错误。
目前是全栈开发程序的新毕业生,这是我第一次在Stackoverflow上,如果我遗漏了一些明显的东西,我很抱歉。感谢帮助/反馈。
解决方案
你不能
setstate
在渲染函数内部,因为它会导致副作用。究竟发生了什么,每次你更新state
react 调用render
函数时,所以如果你要更新state
内部render
函数,那么它将卡在无限循环中
<tbody>
{ user.Medicines && user.Medicines.length !== 0 && user.Medicines.map(item => {
console.log(item)
const medDeets = item.MedDeets
const medDeetMap = medDeets.map(deet => {
const time = deet.timeTaken
return time ;
})
return (
<tr>
<td>{medDeetMap .medicineName}</td>
<td> </td>
<td></td>
<td>{medDeetMap .waitingPeriod} hours</td>
</tr>
)
// }
})}
</tbody>
推荐阅读
- php - Laravel 8路由重定向到空白页面
- sparql - 导入的 .owl 文件的前缀与原始 rdf4j 三元存储相比具有 #'s
- kubernetes - k8s HorizontalPodAutoscaler - 在限制上设置目标,而不是请求
- python - 通过从装饰器内部调用类方法来修改类属性
- r - 在R中使用aea投影将纬度/经度坐标绘制到正式类栅格图层(因子)地图中?
- java - Spring Boot (2.3.6.RELEASE) 使用 RestTemplate 和 Unwrap Root 时反序列化失败
- php - 使用 LengthAwarePaginator 时如何返回 Eloqent 模型而不是数组?
- sql - 根据列的总和计算或查找用户具有最高值的次数
- python - 如何一个班轮访问列表中的numpy数组?
- python - Folium 中 HeatMapWithTime 后面的图层排序