reactjs - 如何从 api 遍历对象列表并将其呈现到 jsx 页面 React 功能组件
问题描述
我正在尝试使用 useEffect 从 api 响应中获取数组项列表,结果我得到了一个对象列表。我想使用 Objects.key() 方法进行转换,但是当我遍历它时,值不会打印在视图页面上。响应不断从 api 响应返回调用。
API 调用
export function getServicesById(facility_id) {
return axios
.get(`${baseURL}patients/appointments/1`)
.then((response) => {
if(response.status===200){
// console.log(response.data)
return response
}
}).catch(error => {
console.log('error', error)
return error
});
}
useEffect 获取响应数据
useEffect(() => {
getServicesById()
.then((res) => {
setResponseData(res.data);
})
.catch((error) => {
console.log(error);
});
// console.log('data is', newResponseData);
}, [responseData, setResponseData]);
将对象转换为数组项
const newResponseData = Object.keys(responseData).reduce((array, key) => {
return [...array, { key: responseData[key] }];
}, []);
我在其中呈现数据的 Jsx 页面
<TableBody>
{newResponseData &&
newResponseData.map((serv, index) => (
<TableRow key={index}>
<TableCell align="left" data-label="Action">
<Field
name="status"
component={renderSelectInput}
variant="outlined"
size="small"
className="fileds"
inputClass="sm-filed"
>
<MenuItem selectedValue="progress">
In progress
</MenuItem>
<MenuItem value="closed">
Closed
</MenuItem>
</Field>
</TableCell>
<TableCell data-label="Id">{serv.id}</TableCell>
<TableCell data-label="Patient name">{serv.patient_name}</TableCell>
<TableCell data-label="Test Name">{serv.test_name}</TableCell>
</TableRow>
))}
</TableBody>
解决方案
除了 Drew Reese 的上述回答之外,请在其中使用 setResponseData 时从 useEffect 参数中删除 responseData ,并且每次状态更改都会触发 useEffect :
useEffect(() => {
getServicesById()
.then((res) => {
setResponseData(res.data);
})
.catch((error) => {
console.log(error);
});
}, [setResponseData]);
推荐阅读
- excel - 计算超过 255 个字符的函数 - Excel/VBA
- pine-script - Pine Script v4 - 如何在前一根柱线的高点/低点设置止损?
- windows-machine-learning - 如何为具有未知组件的形状创建 TensorFloat?
- python - 如何从超像素和稀疏深度图估计深度?
- google-sheets - 数据透视表:如何按时间顺序对月份列进行排序
- java - Kotlin 中的 Java 类对象
- javascript - nodejs mariadb连接没有断开
- cytoscape.js - 用于紧凑显示的 cytoscape.js 树自动定位节点?
- vb6 - 调整窗体大小和控件 VB 6.0
- unit-testing - 如何模拟或创建模拟 express.multer.file?