【发布时间】:2018-08-12 09:22:38
【问题描述】:
我需要在构造函数中定义一个状态变量来存储以下项目:
- abc = 123
- abc = 456
- abc = 349
- 定义 = 378
- 定义 = 348
- xyz = 123
- xyz = 234
另外,我需要在变量上使用以下函数:
- 插入新项目。示例:abc = 234,xyz = 239
- 删除值为 123 的 abc。
- 在插入/删除之前搜索项目是否已经存在: if (abc with value 123) 存在于变量中。
有哪些不同的方法可以做到这一点?最好的方法是什么?
到目前为止,我正在做这样的事情
//selectedCars= {} is a dictionary defined in the state contructor of other class
class xyz extends React.Component {
constructor(props) {
super(props);
}
getMeSomething(car, color, event){
//car can be any car like honda or mercedes
//selected cars is a dictionary that is passed from other class in to this class as props
var existingValues = []
if (this.props.selectedCars[car] != undefined) {
existingValues = this.props.selectedCars[car];
}
var indexOfCar = existingValues.indexOf(car);
if (indexOfCar == -1) {
if (event.target.checked) {
existingValues.push(car);
}
}
else if (!event.target.checked) {
existingValues.splice(indexOfCar, 1);
}
this.props.selectedCars[car] = existingValues
}
render() {
return (
<div style={{ ...}}>
{
this.props.cars.map((car, i) => {
return <div key={i}><span className="yhn"><label><input type="checkbox" onChange={this.getMeSomething.bind(this, car, this.props.color)} /><span></span></label>{car}</span></div>
})
}
</div>
);
}
}
【问题讨论】:
-
请分享您尝试的代码。
-
@HassanImam 我尝试了类似filteredColumns的字典:{}。但是,后来意识到这不是一个很好的解决方案。
-
我猜这些是对象,您希望将它们存储在数组中吗?您不能将它们直接存储在具有重复属性名称的状态对象上。
-
您可以为此使用对象或地图。
-
@WilliamFleming 我已经在上面更新了我现在在我的代码中拥有的内容。因此,正在寻找是否有其他方法可以做到这一点,因为我对 UI 的东西有点陌生,以及这是否会产生良好的性能结果。
标签: javascript reactjs react-native