javascript - 为什么我无法访问 react 中的数组列表

标签 javascript arrays reactjs

我获取一些日期并获取数组,我可以 console.log 并查看所有工作人员,但是当我尝试映射或访问数组中的某些元素时,我收到错误未定义...

然后得到这个 未处理的拒绝(TypeError):无法读取未定义的属性“map”

  const [key, setKey] = useState(false);
  const [country, setCountry] = useState([]);
  const [nextFive, setFive] = useState([]);

  useEffect(() => {
    getWeather();
  }, [key]);


  const getCity = async (e) => {
    e.preventDefault();
    const cityName = e.target.elements.cityName.value;
    const api_call = await fetch(`http://dataservice.accuweather.com/locations/v1/cities/search?apikey=${process.env.REACT_APP_WEATHER_API_KEY}&q=${cityName}&details=true`);
    const data = await api_call.json();
    setKey(data[0].Key);
    setCountry(data[0]);
    return data[0].Key;
  }


    const getWeather = async (cityKey = key) => { 
      const proxy = `https://cors-anywhere.herokuapp.com/`;
      const link = `${proxy}http://dataservice.accuweather.com/forecasts/v1/daily/5day/${cityKey}?apikey=${process.env.REACT_APP_WEATHER_API_KEY}&details=true&metric=true`;

      const api_call = await fetch(link);
      const data = await api_call.json();
      setFive(data.DailyForecasts);

    };


console.log(nextFive); if i tray console.log(nextFive[0].something) i will get error  :) 
console.log(country);

      {
        nextFive.map((item) => {
          return <p>{item.Date}</p>
        })
      }

并得到此未处理的拒绝(TypeError):无法读取未定义的属性“map”

最佳答案

发生这种情况是因为您尝试显示数组中尚未填充的项目的第一个元素。

你可以有一个额外的钩子(Hook),例如weatherLoading,一旦API调用成功,你就可以将weatherLoading的状态设置为true,然后简单地执行以下操作:

weatherLoading && console.log(nextFive[0].something)

关于javascript - 为什么我无法访问 react 中的数组列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57539391/

相关文章:

javascript - Rally 自定义数据存储不会更新

java - 如何在多个方法中使用数组

python - 优化一个 numpy ndarray 索引操作

javascript - 将嵌套数组中的对象分组

json - React JS - 如何将 json 数据绑定(bind)到下拉列表

javascript - 向无Chrome Youtube添加控制按钮?

javascript - 按 group_sort_order 对 EXTJS 的 GridPanel 中的分组数据进行排序

javascript - ASP.NET MVC - Backbone js - 组织多页面 mvc 应用程序

javascript - React Native 中的 "Type"

reactjs - 当我点击 yarn run dev 。它显示 'next' 不是内部或外部命令,也不是可运行的程序或批处理文件