开发者问题收集

× TypeError:无法读取 null 的属性(读取“map”)

2021-12-07
19388

我不明白为什么会出现此错误 TypeError: 无法读取 null 的属性(读取“map”) ,这是一个非常简单的功能。我希望有人能帮助我。

这是我的代码,我无法从 API 请求映射对象。 为了保护隐私,我修改了 API 请求的密钥。

import { useEffect, useState } from "react";

export default function Featured() {

    const [featured, setFeatured] = useState(null);

    useEffect(() => {
        fetch('https://api.rawg.io/api/games?dates=2021-01-01,2021-12-31&ordering=-rating&key=1234')
        .then(response => response.json())
        .then(data => {
            console.log(data.results.slice(0, 4));
            setFeatured(data.results.slice(0, 4));
        });
    }, []);


    return (
        <div className="container mt-5">
            <div className="row">
                {featured.map((el) => {
                    return (
                        <div>{el.name}</div>
                    )
                })}
            </div>
        </div>
    );
}
2个回答

您的问题是因为您将数据以 null 开始。在 api 有机会返回之前的初始渲染中,您的 featured 数组实际上是 null,并且您无法对 null 调用 .map 。相反,您可以将数据以空数组的形式开始,如下所示

const [featured, setFeatured] = useState([]);

或者,您可以在渲染中进行检查,以确保它不再是 null ,api 返回响应后就会出现这种情况。

Chaim Friedman
2021-12-07
{featured &&
 featured.map((el) => {
    return (
       <div>{el.name}</div>
    )
})}
CottonWolf
2022-10-12