[英]Javascript unable to iterate over an array
我有一个数组,浏览器没有对其进行迭代,而是说 data.map() 不是 function。 我发现的所有答案都说当数据不是数组时会出现这个问题,但我的数据肯定是数组。
奇怪的是,这仅在从 url 获取数据时发生,但是当我使用所获取数据的 saved.json 文件时,程序运行良好。 我认为我在获取数据时没有做错任何事情 - 我得到这样的数据 -
export default function useFetch(url) {
const [state, setState] = useState({
data: "",
loading: true,
});
useEffect(() => {
setState((state) => ({
data: state.data,
loading: true,
}));
fetch(url)
.then((x) => {
if (x.ok) {
return x.json();
}
})
.then((y) => {
setState({
data: y,
loading: false,
});
});
}, [url, setState]);
return state;
}
在另一个组件中,我给一个常量一个值:
const { data, loading } = useFetch(url);
然后它会使我的程序崩溃,说它 data.map() 不是 function
但是,当我手动将 go 复制到同一个 url 并保存 JSON 文件时,然后使用该文件而不是 fetch 就可以了。 const data1 = require("../data.json");
所以我有一个案例,其中 data.json 与我从获取请求中获得的数据完全相同,而获取请求本身却没有。 不仅如此,我还可以为 data[0].name 和其他类似的东西创建控制台日志。
最后一个问题是,今天早上,程序也在使用 fetch 版本本身,我只是保存了 .json 文件并开始使用它们,因为我不想继续向服务器发送请求。 在某个时候,我想开始用实际的 feth 响应来测试它,然后它就不再起作用了。
作为最后一点信息 - 当我使用保存的.json 文件编译程序,然后更改代码以使用获取的数据并保存时,我的程序不会崩溃,我可以使用相同的以及其他获取的数据直到我刷新浏览器,此时我再次收到错误。
考虑将 state 初始化为
{
data: [],
loading: true,
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.