【发布时间】:2018-12-11 03:08:37
【问题描述】:
我是 React 新手,在为一组对象设置状态时遇到问题。我希望每个对象都能够单独反映和“单击”状态。下面是我的代码。
const pictures = [
{
photo: 'https://cdn.images.dailystar.co.uk/dynamic/1/photos/755000/620x/cristiano-ronaldo-net-worth-how-much-madrid-player-worth-695569.jpg?r=5c053f491050f',
id: 0,
clicked: false
}, {
photo: 'https://www.tsn.ca/polopoly_fs/1.912227!/fileimage/httpImage/image.jpg_gen/derivatives/landscape_620/antoine-griezmann.jpg',
id: 1,
clicked: false
}, {
photo: 'https://e00-marca.uecdn.es/assets/multimedia/imagenes/2018/02/03/15176565269601.jpg',
id: 2,
clicked: false
}, {
photo: 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTqa94bKUtifeRx2kxVEZFgTNx3JjEgD1ymNqRP8k8Au9zmLZiz',
id: 3,
clicked: false
},
]
export default class picRender extends Component {
state = {
clicked: false
}
handleClick = (event) => {
if (this.state.clicked === false) {
this.setState({clicked: true});
console.log(event.target.getAttribute('data-key') + " state changed to clicked");
console.log(this.state.clicked);
} else if (this.state.clicked === true) {
console.log('THIS HAS BEEN CLICKED!');
}
}
render() {
return pictures.map(pic => <img
className="photo"
data-key={pic.photo}
key={pic.id}
src={pic.photo}
onClick={this
.handleClick.bind(this)}></img>);
}
}
每点击一张图片,整个数组的状态就会变为“真”。我不确定如何反映每个单独对象的状态变化。
【问题讨论】:
-
简单的答案是将
img拆分成另一个组件并在点击时添加,这样数组中的每个项目都会有自己的状态