Javascript无法迭代数组

Javascript无法迭代数组,javascript,json,reactjs,Javascript,Json,Reactjs,我有一个数组,而不是遍历它,浏览器说data.map()不是函数。我找到的所有答案都表明,当数据不是数组,但我的数据肯定是数组时,就会出现这个问题 奇怪的是,只有在从url获取数据时才会发生这种情况,但当我使用已保存的.json文件获取数据时,该程序工作正常。我认为我在获取数据时没有做错任何事情——我得到的数据是这样的- export default function useFetch(url) { const [state, setState] = useState({ data

我有一个数组,而不是遍历它,浏览器说data.map()不是函数。我找到的所有答案都表明,当数据不是数组,但我的数据肯定是数组时,就会出现这个问题

奇怪的是,只有在从url获取数据时才会发生这种情况,但当我使用已保存的.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;
}
在另一个分量中,我给出一个常数a值:

const{data,load}=useFetch(url)

然后它会使我的程序崩溃,说它data.map()不是函数

但是,当我手动转到同一个url,并保存那里的JSON文件,然后使用该文件而不是fetch时,程序运行得很好
constdata1=require(“../data.json”)

所以我有一个例子,data.json与我从fetch请求中获得的数据完全相同,而fetch请求本身不起作用。不仅如此,我还能够为数据[0].name和其他类似内容创建控制台日志

最后一个问题是,今天早上,程序本身也在使用fetch版本,我只是保存了.json文件并开始使用它们,因为我不想继续向服务器发送请求。在某个时刻,我想开始用实际的费斯反应来测试它,然后它就不起作用了


最后一点信息——当我用保存的.json文件编译程序,然后将代码更改为使用获取的数据并保存时,我的程序将不会崩溃,并且我可以使用相同的数据和其他获取的数据,直到我刷新浏览器,此时我再次收到错误。

将初始化状态视为

{
    data: [],
    loading: true,
  }

您如何映射
数据
数组?在您的其他组件中?第一次呈现组件时,数据将是空字符串。直到很久以后,在另一个渲染中,您的数据才会被提取。你在试图绘制地图之前检查过那个案子吗?这也是将数据初始化为
[]
而不是空字符串的一个选项。数据的初始值设置为“”,请在将“”替换为[](空方框)后重试。我正在使用data.map((x)=>()函数迭代数据并获得不同的x值