我在React中有一个对象,我已经映射并想让它进行交互:我想要它,所以当用户点击' X'在元素旁边的按钮,它将console.log指向该被单击元素的键。
这是对象:
var obj = {
person1: {
name: 'iggy',
superPower: 'awesomeness',
favDonut: 'chocolate'
},
person2: {
name: 'iggy2',
superPower: 'stupendousness',
favDonut: 'glazed'
},
person3: {
name: 'iggy3',
superPower: 'amazingness',
favDonut: 'chocolate sprinkles'
}
};
迭代看起来像这样:
X chocolate
X glazed
X chocolate sprinkles
如果我点击glazed
上的x,我希望它为console.log person2
,因为它是glazed
的父对象。如果我点击chocolate sprinkles
上的x,我想要它来控制.log person3
。
这是小提琴:https://jsfiddle.net/iggyfiddle/b9rreoje/2/
我想弄清楚的方法是getPersonName
函数。允许用户单击x和console.log相关对象键的最佳方法是什么?
答案 0 :(得分:1)
您可以Object.values
而不是Object.keys
,这样您就可以访问相应的密钥。
getPersonName: function(person){
console.log(person);
}
const donutValues = Object.keys(obj).map((key, index) => <li key={index}><a href="#" onClick={() => this.getPersonName(key)}>X</a> {obj[key].favDonut} </li>);
答案 1 :(得分:0)
您需要将onClick
设置为使用相应的person对象调用getPersonName
的内联函数。
getPersonName: function(person){
console.log(person);
},
render(){
const donutValues = Object.values(obj).map((person, index) => <li key={index}><a href="#" onClick={function(){this.getPersonName(person)}.bind(this)}>X</a> {person.favDonut} </li>);
return (
<div>
Hello
<ul>
{donutValues}
</ul>
Give me person: {this.state.person}
</div>
);
}
在此处找到更新的jsfiddle:https://jsfiddle.net/8637u8qL/