如何解决ReactJS中的map函数问题?[复制]

How can I solve map function problem in ReactJS? [duplicate]

提问人:Matsumoto 提问时间:11/17/2023 更新时间:11/17/2023 访问量:31

问:

我正在获取数据,并将道具传递给其他组件。但是在其中一个子组件中,我不能使用 map() 函数。我得到无法读取未定义的属性(读取“map”)。我认为这是一个异步数据问题。但我解决不了。

这是我的子组件:

function WeeklyForecast({data}) {

      console.log(data);
      
      return (
        <div className='WeeklyForecast'>
          <div className="Prev-Btn">
            <button>&lt;</button>
          </div>
          <div className="Forecast-List">
          {data.map((forecast, index) => (
              <div key={index}>
    
                <p>{forecast[0]}</p>
    
              </div>
            ))}
          </div>
          <div className="Next-Btn">
            <button>&gt;</button>
          </div>
        </div>
      )

}

有我的错误和浏览器控制台结果没有map()函数:

enter image description here

enter image description here

JavaScript ReactJS 异步 获取

评论

0赞 Jared Smith 11/17/2023
不要将 null 或 undefined 作为 data 属性传递给子组件。您没有给我们足够的代码来使用,但您可能希望在父组件中将类似这样的内容更改为 .const [data, setData] = useState()const [data, setData] = useState([])

答:

0赞 Sharp Dev 11/17/2023 #1

因此,您面临的问题是,您正在尝试在数据可用之前对其进行映射(根据您的日志),您要做的是在盲目映射数据之前确保数据可用......您可以通过检查数据是否可用来执行此操作。您可以在此处了解有关条件渲染的更多信息。

只需在语句中添加一个 && (AND) 子句,这样就可以保证数据不是未定义且可用的。
这将使您能够等待数据从服务器加载。
因此,语句变为
因此,您的代码将如下所示。
data && data.map(...)

function WeeklyForecast({data}) {

      console.log(data);
      
      return (
        <div className='WeeklyForecast'>
          <div className="Prev-Btn">
            <button>&lt;</button>
          </div>
          <div className="Forecast-List">
          {data && data.map((forecast, index) => (
              <div key={index}>
    
                <p>{forecast[0]}</p>
    
              </div>
            ))}
          </div>
          <div className="Next-Btn">
            <button>&gt;</button>
          </div>
        </div>
      )

}