数组[index]。对象在ReactJS中不工作

数组[index]。对象在ReactJS中不工作,reactjs,Reactjs,我使用的是上下文API,forex是上下文API中的一个状态,包含21个对象的数组 对象的示例是: { "Date": "2019-11-09", "BaseCurrency": "INR", "TargetCurrency": "NPR", "BaseValue": "100", "TargetBuy": "160.00", "TargetSell": "160.15" } 问题出在第4行console.log(date.date)中,如果我删除这一行并运行此代码,那

我使用的是上下文API,forex是上下文API中的一个状态,包含21个对象的数组

对象的示例是:

{
  "Date": "2019-11-09",
  "BaseCurrency": "INR",
  "TargetCurrency": "NPR",
  "BaseValue": "100",
  "TargetBuy": "160.00",
  "TargetSell": "160.15"
}
问题出在第4行
console.log(date.date)
中,如果我删除这一行并运行此代码,那么第11行
forex.map(…)
运行良好

在数组中使用.map函数和使用数组索引访问对象不是一样吗

代码如下:

  const API = useContext(ExchangeContext);
  const { forex } = API;

  const date = forex[0];
  console.log(date.Date);

  return (
    <table data-vertable='ver1'>
      <thead>
        <TableHead />
      </thead>
      <tbody>
        {forex.map((obj) => (
          <TableRow row={obj} key={obj.BaseCurrency} />
        ))}
      </tbody>
    </table>
  );
constapi=useContext(ExchangeContext);
const{forex}=API;
const date=外汇[0];
控制台日志(date.date);
返回(
{forex.map((obj)=>(
))}
);
错误:

听起来您的
useContext
调用在等待从
ExchangeContext
获取数据时返回回调,因此不会妨碍其余代码的运行。从您收到的错误判断,这是由于未定义
date
变量的错误,而不是因为
forex
数组中没有
date
键。删除
console.log()
时,它起作用的原因可能是因为回调有足够的时间在DOM映射数组时返回数据,但如果使用较大的数据集,这可能会在将来中断。您可能应该在那里添加一些错误处理,以便仅当数组中有数据时才进行映射。同时,您可以将console.log移动到useEffect,如下所示:

useEffect(() => {
  if (typeof(forex) !== 'undefined' && forex.length) {
    console.log(forex[0].Date)
  }
}, [forex])

通过这种方式,您可以保证
useContext
回调有足够的时间返回,并且数据加载到您的外汇数组中。

为什么您认为
forex
是一个数组?如果是-为什么您认为
不是空数组?“在ReactJS中”——您的前3行与react没有任何关系。您是指react上下文API吗?看起来您的代码与文档不匹配。是的,这是React上下文API,如果我删除
console.log()
line,那么第10行
forex.map()
运行正常,我可以说forex是一个数组原因。