javascript - 如何根据 defaultprops 数组中的值有条件地渲染组件?
问题描述
我有一个 ReactJSstatic defaultProps
数组,用于呈现多个按钮。我希望根据单击的特定按钮有条件地生成一个文本组件。
这是一个描述Car
组件的示例:
...
static defaultProps = {
cars: [
{ type: 'hatchback', color: 'red', info: '...' },
{ type: 'sedan', color: 'blue', info: '...' },
{ type: '4x4', color: 'green', info: '...' },
]
}
...
假设每个“类型”字段生成一个标有 的按钮type
。假设我想创建一个描绘颜色的样本 div onClick
。因此,如果我单击'hatchback'
按钮,则样本 div 将变为'green'
or'red'
或'blue'
,具体取决于type
所选的汽车。
最简单的方法是什么?
以下是按钮映射功能的示例:
{this.props.cars.map((car) => (
<button>
{car.type}
</button>
这是colorSwatch
div 的一个示例:
<div className={styles.colorSwatch}>{car.info}</div>
尽可能具体,问题在于文本内容而不是条件 CSS 问题。
我想知道如何有条件地设置info
.
解决方案
您可以将单击的按钮对象存储在状态中并使用它来呈现您的 colorSwatch div
{this.props.cars.map((car) => (
<button onClick={() => this.setState({clickedBtn: car})}>
{car.type}
</button>
const { clickedBtn } = this.state;
...
{clickedBtn && <div className={styles.colorSwatch}>{clickedBtn.info}</div>}
推荐阅读
- ios - 闭包内的返回语句
- php - 正则表达式,RegEx,用于验证 php 中的复杂字符串
- javascript - 将两个变量与生成的数字进行比较
- r - 我的 yathzee 函数卡在 if 语句中
- javascript - 如何在 Vanilla JavaScript ES6+ 中从 DOM 集合中获取唯一元素
- wordpress - Wordpress Contact Form 7 插件在提交表单后花费的时间太长
- ios - 有没有一种简单的方法可以在 Swift 中收集 wifi 和蜂窝数据使用统计信息?
- dns - 使用长 dkim 密钥时出现 Opendkim 错误“密钥检索失败”
- data-structures - 使用最大 api 的双端队列?
- logic - 如果 f(n) = 2n^2 和 g(n) = 1.01^n。f(n) = O(g(n)) 吗?f(n) = Ω(g(n)) 吗?