【发布时间】:2018-06-16 03:15:27
【问题描述】:
我正在映射状态项属性内的对象数组中的每个对象。问题是,我希望能够为每个返回的项目附加一个按钮,该按钮仅适用于该项目,而不适用于其他项目。到目前为止,这是我所拥有的:
class App extends React.Component {
state = {
item: [],
}
componentDidMount() {
this.setState({
item: [
{
name: 'jacob',
hair: 'brown',
sex: 'male',
}, {
name: 'hannah',
hair: 'brown',
sex: 'female',
}
]
})
}
handleChange = (e) => {
console.log(e.target.value)
var x = Object.assign({}, this.state)
}
render() {
return(
<div>
{ this.state.item.length > 0 ?
(
<div className="row mt-5">
<Item item={ this.state.item } handleChange={ this.handleChange } />
</div>
) : null
}
</div>
)
}
}
class Item extends React.Component {
render() {
return(
<div className="col">
{ this.props.item.map(s => (
<div>
<div className="mt-5">{ s.name }</div>
<button onClick={ this.props.handleChange } value={ s.name }>Click</button>
</div>
))}
</div>
)
}
}
因此,例如,如果按钮的 fx 要更改它所呈现的项目的 name 属性,我希望它仅更改该项目,而不应影响其他项目。每当我遍历它时,它都会将按钮的 fx 附加到每个项目,所以如果我单击它,我真的会为所有项目单击它,而这正是我不想要的。
对于那些好奇的人,我在 componentDidMount 中设置状态来模拟调用 API。
此外,当前在 handleChange 中运行的 fx 只是我试图找出值和操作数组内嵌套对象的解决方案的一些麻烦。
【问题讨论】:
标签: javascript reactjs array.prototype.map