javascript - 如何在 React 中迭代组件内的组件
问题描述
我的产品组件仅显示产品、价格和描述
const Product = (props) =>{
return(
<div>
<p>Price: {props.price} </p>
<p>Name: {props.name}</p>
<p>Description: {props.desc}</p>
</div>
)
}
它由 App 组件呈现,该组件循环遍历 productsData 中的数据,并为数组中的每个索引呈现一个产品组件。
class App extends React.Component {
render() {
const products = productsData.map(product => {
return <Product key={product.id} price={product.price}
name={product.name} desc={product.description} />
})
return (
<div>
{products}
</div>
);
}
}
但是,为了学习的目的,我试图弄清楚我如何能够循环通过这一系列产品组件(在 App 中呈现)以仅显示例如大于 10 的价格或更长的描述例如,超过 10 个字符。
productsData 看起来像这样
const productsData = [
{
id: "1",
name: "Pencil",
price: 1,
description: "Perfect for those who can't remember things! 5/5 Highly recommend."
},
我假设我需要在产品组件中使用 .filter 方法,但我似乎无法弄清楚在哪里。我不断收到错误或未定义。有人可以澄清这一点,如何通过嵌套在其他组件中的组件进行迭代?
解决方案
尝试这个:
const products = productsData.filter(product => (
product.price > 10 || product.description.length > 10
)).map(p => (
<Product key={p.id} price={p.price}
name={p.name} desc={p.description}
/>
))
Chaining
方法允许您filter
获得map
所需的结果。
在这里阅读更多关于filter
:https ://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter
推荐阅读
- azure-data-explorer - 将范围运算符 columnName 作为参数传递给 Kusto 中的自定义函数
- operating-system - 分配前零页的原因是什么?
- asp.net-core - 无法运行 ASP.NET Core 应用程序
- javascript - 如何在 React 应用程序中手动本地测试打字稿功能?
- python - 拟合对数正态分布(Python 图)
- javascript - 根据光标是否在文本字段中显示/隐藏 div
- javascript - 防止人们能够单击按钮内的图标
- python - BeautifulSoup:数字问题
- python - 将 df.get() 函数应用于 pandas df 中的每一行
- javascript - 为什么当我将 tr 标签移动到深层时反应行为很奇怪?