You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React项目中如何通过Promise导入其他文件的const常量数据

解决方案

问题本质

你当前的test是一个返回Promise对象的函数,并非可遍历的数组,同步执行的组件渲染逻辑在Promise还没resolve的时候直接调用map方法自然会报错。

代码调整步骤

1. 组件侧异步获取数据并存入状态

React中处理异步渲染数据需要配合useState存储数据、useEffect触发异步获取逻辑,同时增加空值判断避免数据还没返回时报错:

import { test } from "./test"
import { useState, useEffect } from "react"

function List() {
  // 初始化存储数据的状态,默认是空数组
  const [listData, setListData] = useState([])

  useEffect(() => {
    // 调用异步方法获取数据
    const fetchData = async () => {
      const res = await test()
      setListData(res)
    }
    fetchData()
  }, [])

  return (
    <div className="food">
      {listData.map((value,index) => (
         <div key={index}>
           <p>{value.name}</p>
           {/* 兼容car字段为数组的情况,避免直接渲染数组报错 */}
           <p>{Array.isArray(value.car) ? value.car.join('、') : value.car}</p>
           </div>    
         ))}
    </div>   
  ) 
}
export default List

2. (可选)导出文件调整

如果你的异步逻辑只是模拟场景不需要真实异步请求,可以直接导出数组简化逻辑:

export const test = [
  {
    name: "tom",
    car: "tesla"
  },
  {
    name: "sam",
    car: "honda"
  },
  {
    name: "may",
    car: ["toyota", "BMW"],
  }
]

调整后组件就可以不用异步逻辑直接调用test.map遍历。


内容的提问来源于stack exchange,提问作者kelvin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 05:36:01