我已经为此奋斗了好几天,但似乎找不到一个有效的解决方案。我只是不断地从一个错误转到另一个错误。目前,我的表中只有一个条目,没有填充任何数据,只有一个空行。这是我能做到的最接近于使它工作的方法,因为至少这个解决方案正在呈现表。如果我将API调用更改为我在网上看到的任何解决方案,我开始收到可怕的“e.map不是函数”错误,屏幕变空,或者控制台日志将返回[object Object],这取决于我所做的更改。有人能帮我找出为什么我的表没有填充吗?
这个解决方案在我的沙盒应用程序中运行得很好,但是一旦我把它放到实际的项目中,它就开始失败了。我怀疑这是因为实际的项目使用了Typescript,到目前为止,Typescript几乎提升了我试图添加到这个应用程序中的每一个增强功能。
currenty,以及res.data在setTableData([res.data])中将www.example.com放在方括号中时的日志;,我至少可以得到一个空表。但是如果我去掉方括号,我会得到“eidemap不是函数”错误。
我的控制台日志(res)正在返回:
{data:{...},状态:200,状态文本:“”,标题:{...},配置:{...},...}配置:{过渡:{...},转换请求:数组(1),转换响应:数组(1),超时:0,适配器:,...}数据:{结果:数组(23),总结果计数:23}个标头:{缓存控制:'无缓存,无存储,最大期限=0,必须重新验证',连接:“保持活动”,内容类型:'application/json',日期:“格林威治时间2023年2月16日星期四15:32:02”,到期日:“0”,...}请求:XML HTTP请求{__区域符号__xhr同步:错误,__区域符号__xhrURL:' ---为保护隐私已删除URL--- ',__区域_符号__loadendfalse:数组(1),__区域符号__ON_PROPERTY加载结束:,__区域符号__ON属性中止:,...}状态:200状态文本:“”原型:对象
正如您从控制台中看到的,我得到了一个包含23个条目的数据数组,但似乎无法将其填充到表中。
我使用state将响应数据设置为tableData,但它似乎在某种程度上改变了数据。
...但我的控制台.log(tableData)返回
[]长度:0最后索引:(...)最后一项:(...)原型:数组(0)
下面是我的API调用:
const [tableData, setTableData] = React.useState([]);
const [loading, setLoading] = React.useState(true);
React.useEffect(() => {
const fetchData = async () => {
setLoading(true);
try {
const res = await axios.get(baseURL);
setTableData([res.data]);
console.log( res );
console.log( tableData);
} catch (error) {
console.error(error.message);
}
setLoading(false);
};
fetchData();
}, [baseURL, setTableData, setLoading]);
我的表
{loading ?
<LoadingData />
:
(dataLength === 0 ?
<NoResults />
:
tableData().map((item, id) => (
<TableRow key={item['modelIdInfo']} >
... code ...
</TableRow>
)))
}
1条答案
按热度按时间cigdeys31#
错误在于呈现输出的方式
您可以尝试以下方法,而不是使用三元运算符:
在一个真实的的应用程序中,你可以用materialui库中的圆形进度条或者错误吐司信息来代替Loading... text