javascript - 对象未在屏幕上呈现
问题描述
我有这段代码,我尝试渲染一个对象的值,但它没有发生。但是在控制台中我可以看到一个键和它的值。我无法弄清楚可能是什么原因,因为我可以看到值和键。
export const MarketPlaceOptions = (props) => {
return (
<Wrapper hideMarginBottom={props.forCreditSuggestion}>
{
Object.keys(props && props.categories).forEach(function(key) {
return(
<Tile onClick={() => props.onClickOptionTile(key)}>
<Image src={Wellness} height={'34px}'} width={'36px'}/>
<h1>{props && props.categories[key]}</h1>
<Ptag textAlign='center'>
{props && props.categories[key]}
</Ptag>
</Tile>
)
})
}
</Wrapper>
)
}
const Wrapper = styled.div`
display: flex;
overflow-x: auto;
-webkit-scrollbar { display: none;}
`;
export default MarketPlaceOptions;
解决方案
问题是您正在运行.forEach()
而不是.map()
on Object.keys(props && props.categories)
。ForEach 将返回 undefined,因此即使回调函数返回一个值,也不会渲染任何内容。使用 map 将根据回调函数的累积返回值返回一个新的对象数组。
作为旁注,我鼓励您将检查 props.categories 是否存在的逻辑移到 Object.keys() 的外部。
{ props && props.categories && Object.keys(props.categories).map(
...
}
推荐阅读
- javascript - 如何使用 jQuery 启用和禁用文本框?
- django - 在单独的文件中组织 django 模型时导入错误
- android - 如何使用 Executor 启动新的 gms/firebase 任务?
- django - 循环进口动机
- javascript - 快速获取 URL 并删除某些对象
- php - 只有 1 个使用 php 进入 mysql 的多个 json 数组
- angular - Angular 6 ng build --prod 错误:未捕获(承诺):无法读取未定义的属性“调用”
- php - 使用 php 的朴素贝叶斯算法
- amazon-web-services - AWS:从特定 AMI 自动创建现场实例
- javascript - 将值从工厂传递到控制器 angularJS