javascript - 根据选中的单选按钮显示数组项的数据
问题描述
如果颜色属性与单击的单选按钮颜色匹配,我将尝试显示鞋子数组项的数据。如果选择了黑色单选按钮,则应显示具有黑色属性值的数组项。
(注:如何显示或渲染鞋子数据)
提前致谢!
应用程序.js
import React, { Component } from "react";
class CheckColor extends Component {
constructor(props) {
super(props)
this.state = {
color: '',
shoes: [
{name: 'Black Shoe', color: 'Black', price: 180},
{name: 'Red Shoe', color: 'Red', price: 120},
{name: 'White Shoe', color: 'White', price: 100}
]
}
this.handleColorChange = this.handleColorChange.bind(this)
}
handleColorChange(e) {
const color = e.target.value
this.setState({ color: color })
}
render() {
const colors = ['Black', 'Red', 'White']
return(
<form>
{colors.map((color, index) =>
<label key={index}>
{color}
<input
value={color}
checked={this.state.color === color}
onChange={this.handleColorChange}
type="radio"
/>
</label>
)}
</form>
)
}
}
export default class App extends Component {
render() {
return (
<div className="App">
<CheckColor />
</div>
);
}
}
解决方案
您可以根据选定的颜色值过滤颜色,然后只需使用地图来显示过滤后的鞋子。
import React, { Component } from "react";
class CheckColor extends Component {
constructor(props) {
super(props);
this.state = {
color: "",
shoes: [
{ name: "Black Shoe", color: "Black", price: 180 },
{ name: "Red Shoe", color: "Red", price: 120 },
{ name: "White Shoe", color: "White", price: 100 }
]
};
this.handleColorChange = this.handleColorChange.bind(this);
}
handleColorChange(e) {
const color = e.target.value;
console.log(color);
this.setState({ color: color });
}
render() {
const colors = ["Black", "Red", "White"];
const shoesToShow = this.state.shoes.filter(item => ( item.color === this.state.color));
console.log(shoesToShow);
return (
<>
<form>
{colors.map((color, index) => (
<label key={index}>
{color}
<input
value={color}
checked={this.state.color === color}
onChange={this.handleColorChange}
type="radio"
/>
</label>
))}
</form>
{shoesToShow.map(shoe => (
<div>{shoe.name} </div>
))}
</>
);
}
}
推荐阅读
- excel - Excel - 如何获得最后一个由数字和“N/A”随机混合组成的行中最后 10 个值的平均值
- ios - 在苹果商店添加评论信息截图?
- wordpress - Elementor 小部件分离问题
- python - “!”是什么意思?在python中登录吗?或者它是一个Linux commad?
- javascript - MongoDB:你可以将一个集合作为一个字段包含在另一个集合的文档中吗?
- angular - 无法在 ngForm 中初始化 ng-select
- javascript - 在 react 中使用 map 列出 JSON 的所有值时遇到问题
- x86 - 是否可以通过提供更早的提示来减轻分支错误预测的惩罚?
- android - 如何使用 DiffUtil 保存对旧列表的引用
- python-3.x - 运行 Azure DevOps 管道存在 ##[error]Bash exited with code '1'