数组[index]。对象在ReactJS中不工作
我使用的是上下文API,forex是上下文API中的一个状态,包含21个对象的数组 对象的示例是:数组[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)中,如果我删除这一行并运行此代码,那
{
"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是一个数组原因。