Я создаю веб-приложение, в котором вы можете настроить велосипед. Вы можете выбрать детали, и если вы нажмете на часть, будет показано изображение части, поэтому ее стиль изменится с none
на block
. Я хотел использовать ReactJS, но мне сложно понять это. Я не мог найти лучший способ скрыть те элементы, которые я хочу, кроме jQuery. Это то, что я в моем коде:Видимость переключающих элементов
var bikeInfo = {
parts: [
{
id: 1,
img: "http://designyourbike.ch/dyb_img/parts/154-2015071616148075.png",
style: {
top: 0,
left: "432px",
display: "none"
}
},
{
id: 2,
img: "http://designyourbike.ch/dyb_img/parts/189-2015071616141931.png",
style: {
top: 0,
left: "432px",
display: "none"
}
}
]
}
var Nav = React.createClass({
handleClick: function(e) {
e.preventDefault();
var partID = e.target.getAttribute("data-part");
$(".part").hide();
$("#part-" + partID).show();
},
render: function() {
var parts = this.props.bikeInfo.parts;
var _this = this;
return (
<div className="nav">
{
parts.map(function(part) {
return (
<a href="#" data-part={part.id} onClick={_this.handleClick}>{"Part " + part.id}</a>
)
})
}
</div>
)
}
});
var Bike = React.createClass({
handleClick: function(e) {
e.preventDefault();
},
render: function() {
var parts = this.props.bikeInfo.parts;
return (
<div>
<div className="parts">
<img src="http://designyourbike.ch/dyb_img/parts/152-201506308399268.png" />
{
parts.map(function(part) {
return (
<img className="part" style={part.style} id={"part-" + part.id} src={part.img} onClick={this.handleClick} />
)
})
}
</div>
</div>
)
}
});
React.render(<Nav bikeInfo={bikeInfo} />, document.getElementById("nav"));
React.render(<Bike bikeInfo={bikeInfo} />, document.getElementById("bike"));
Мой вопрос, есть ли другой способ (лучше, быстрее, React-иш путь) сделать это без использования JQuery вообще.
Живая JSFiddle текущего результата:
https://jsfiddle.net/69z2wepo/12521/
Если кто-то ищет пример, он может пойти что-то вроде этого: вара handle2Styles = { дисплея: (это. state.handle2)? 'block': 'none' } Кажется, это самый чистый способ для меня тоже :) – madebysid