繁体   English   中英

Javascript 无法遍历数组

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM