Я наткнулся на этот пост: HTML - цвет при нажатии и другие
- в том же
И это похоже на то, что я ищу; но я был немного озадачен тем, как бы я делал то же самое в приложении rails (которое также использует response / redux). В приложениях rails, над которыми я работал до сих пор, я пока не вижу в них jquery, поэтому я не уверен, где и как я реализовал бы ту же идею. Любая помощь приветствуется!
Я подумал об использовании события onClick
для элементов li, а затем о создании функции для добавления класса в элемент, по которому щелкнули, / удаления класса из всех других элементов li, но я я не уверен, что это на правильном пути.
// это мой компонент, отрисовывающий элемент ul
import React from 'react';
import TrackIndexItem from './track_index_item';
const TrackDetail = ({ tracks }) => (
<ul>
{ tracks.map(track => <TrackIndexItem key={ track.id } track={track} />) }
</ul>
);
export default TrackDetail;
// это мой компонент, отрисовывающий элементы li
import React from 'react';
const TrackIndexItem = ({ track }) => (
<li>
<div className="track-info">
<i className="music-note-icon"></i>
<div className="track-text">
<p>{track.title}</p>
<p>{track.artist} • {track.album}</p>
</div>
</div>
</li>
);
export default TrackIndexItem;
// это мои css для элементов li:
li {
display: flex;
flex-direction: row;
padding: 0 20px;
.track-info {
display: flex;
flex-direction: column;
position: relative;
.music-note-icon {
position: absolute;
content: image_url('music-note-icon.png');
width: 10px;
height: 15px;
top: 20px;
}
.track-text {
margin-left: 25px;
p {
font-family: 'ProximaNova-Regular';
}
p:first-of-type {
font-size: 18px;
color: $white;
}
p:last-of-type {
font-size: 16px;
color: $gray;
margin-top: -15px;
}
}
}
}