arrays - React,如何用不同的键渲染静态 json 数据
问题描述
这是静态 json 数据的示例。
我无法从数组中渲染“ promoimage ”。
我不是 100% 确定如何解决这个问题。我在玩arround,想检查'promoimage'是否存在,但没有返回任何东西?任何建议如何实现这一目标?
[
{
"title": "some title",
"promoimage": "image.jpg",
"url": "#"
},
{
"title": "some title",
"image": "example.jpg",
"url": "#"
},
{
"title": "some other title",
"promoimage": "image.jpg",
"url": "#"
},
{
"title": "title",
"image": "example.jpg",
"url": "#"
},
]
我的反应组件:
import products from '../product-data.json';
...
export const CustomSlider = () => {
// Here I'm using react-slick
const productList = products.map((product, i) => {
const uniqueItems = [];
if (uniqueItems.indexOf(product.imageone) === -1) {
uniqueItems.push(product.imageone);
}
/* This works
if (product.hasOwnProperty('promoimage')) {
return true
}
*/
return <Product key={i} {...product} />;
}
);
return (
<Slider>
{productList}
</Slider>
)
}
解决方案
该代码将所有对象键发送到Product
, 作为道具。特别是这部分{...product}
扩展为:
<Product
key={i}
title="some title"
promoimage="image.jpg"
url="#"
/>
这称为传播。
现在,我怀疑<Product>
不知道如何处理promoimage
,但知道如何处理image
。我们还没有发送任何image
东西,所以我们必须解决这个问题。我们可以通过修改 product 使其呈现image || promoimage
,或者将我们的解析更改为:
const productList = products.map((product, i) => {
const uniqueItems = []
if (uniqueItems.indexOf(product.promoimage) === -1) {
uniqueItems.push(product.promoimage)
}
return (
<Product
key={i}
{...product}
image={product.image || product.promoimage}
/>
)
})
推荐阅读
- forms - Google Apps 脚本(表单和表格)中的本地存储
- python-3.x - NameError:名称 'f_num' 未在 tkinter 中定义
- rxjs - 每当一个流发出时从两个流中获取值
- python - pyenv 版本仍然指向旧安装
- arrays - 如何创建一个指针数组并修改该数组的值?
- r - R:预测功能错误(未标记的包)
- javascript - Chrome 扩展 打开新标签页,发送消息到新标签页
- r - 将向量拆分为具有恒定长度和恒定重叠的子向量
- python - 使用 ninja 构建 payload.bin 时出现 Python 错误
- c# - C# 窗体关闭事件冻结应用程序