У меня есть некоторые проблемы, и я получаю шуйоны немного. Я хочу скопировать мой массив объектов. И сделайте каждого из них интерактивным. После щелчка Я хочу, чтобы конкретный объект показывал только свои аватары:Как обрабатывать onClick для многих объектов из того же массива
const stations = [
{
name: 'first',
avatar: './img/1.jpg'
},
{
name: 'second',
avatar: './img/2.jpg'
},
{
name: 'third',
avatar: './img/3.jpg'
},
{
name: 'fourth',
avatar: './img/4.jpg'
},
{
name: 'fifth',
avatar: './img/5.jpg'
}
]
Прямо сейчас. Я могу получить доступ к значению, которое мне нужно, из моего массива базы данных. Но! У меня проблема:
this.state = {
clicked: false
}
this.handleClick = this.handleClick.bind(this)
}
Мои объекты не имеют отдельного состояния. Поэтому, когда я хочу создать какое-то действие на основе this.state (например, hide and show), он всегда работает над элементом EVERY.
У меня есть код, который работает в некотором роде. Когда я визуализации списка и нажмите на любую кнопку, действие происходит для каждого из них:
class radiosList extends React.Component {
constructor() {
super();
this.state = {
clicked: false
}
this.handleClick = this.handleClick.bind(this)
}
handleClick(station) {
console.log(this)
this.setState({ clicked: !this.state.clicked })
}
render() {
return (
<div>
{
this.props.stations.map((station, index) => (
<div className='radio_list radio_list--component' style={{cursor: 'pointer'}} onClick={() => this.handleClick(station.avatar)}>
<div className='radio_list radio_list--component radio_list--component-station_name'>{station.name}</div>
</div>
))
}
</div>
)
}
}
export default radiosList
Edit: первый ответ помог доступа к значениям мне нужно.
Вы пытались изменить imgSrc? {this.state.clicked? : null} –
Работал, но я сделал несколько плохих описаний => теперь правильно один :) – Draer
@Draer Что работает –