开发者问题收集

TypeError:null 不是对象(评估“daysData.map”)- 尝试映射对象数组

2021-12-24
1301

希望你们都一切顺利,我尝试寻找关于我在 ReactJS 中遇到的这个问题的具体答案,我试图映射通过本地系统获取的数组,但控制台中一直出现此错误:

TypeError: null is not an object (evaluating 'daysData.map')

这是我的代码快照,其中我从获取中初始化数组: Fetched data to Array

这是文本格式:

// Here I initalize the array with useState
  const [daysData, setDaysData] = useState(null);

  // Here is the port I'm fetching my array from.
  useEffect(() => {
    fetch('http://localhost:5001/chocolates')
      .then((resp) => resp.json())
      .then((data) => setDaysData(data));
  }, []);

  // Console logging is sending back the array with no issues
  console.log(daysData);

这是我尝试使用数组中的“id”键渲染的映射函数:

Array.map not working

以下是文本格式的代码:

{/* Here I'm getting the error " TypeError: null is not an object (evaluating 'daysData.map') " */}
      {daysData.map((day) => (
        <div>{day.id}</div>
      ))}

以下是我尝试映射的数组示例,该数组已从中获取数据: Array and Objects Within

在此先感谢您的帮助

2个回答

只是将默认状态设置为空数组而不是null,因此 array.prototype.map() 在收到数据之前的初始渲染上都可以使用。

空数组的map()在渲染视图中不会产生任何东西

430423698
charlietfl
2021-12-24

您的数组在渲染时为空,并且您的 api 在渲染您的 Web 应用程序后提取,因此您需要像这样有条件地设置它

{daysData !== null? daysData.map((day) => <div>{day.id}</div>:null)}
Mohamed Salah
2021-12-24