TypeError:null 不是对象(评估“daysData.map”)- 尝试映射对象数组
2021-12-24
1301
希望你们都一切顺利,我尝试寻找关于我在 ReactJS 中遇到的这个问题的具体答案,我试图映射通过本地系统获取的数组,但控制台中一直出现此错误:
TypeError: null is not an object (evaluating 'daysData.map')
这是文本格式:
// 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”键渲染的映射函数:
以下是文本格式的代码:
{/* Here I'm getting the error " TypeError: null is not an object (evaluating 'daysData.map') " */}
{daysData.map((day) => (
<div>{day.id}</div>
))}
在此先感谢您的帮助
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