#html #reactjs #react-jsx #reactjs-flux
#HTML #reactjs #reactjs-flux
Вопрос:
Я обучаю себя фреймворкам REACT / FLUX.У меня есть этот раздел html.
<article class="column_grid_5 " data-id="2">
<div class="image">
<a href="#"><img src="img/1.jpg" alt=""></a>
<span></span>
</div>
<hgroup>
<h1><a href="#">13</a></h1>
<h2><a href="#">Title</a></h2>
</hgroup>
<form method="post" action="">
<ul>
<li>
<h3>cube</h3>
<strong>R1.90</strong>
<input autocomplete="off" type="text" name="quantity_single">
<label>qty</label>
</li>
<li class="second">
<h3>Pkt</h3>
<strong>R9.06</strong>
<input autocomplete="off" type="text" name="quantity_case">
<label>qty</label>
</li>
</ul>
<div class="buttons">
<a href="#" class="button detail">Details</a>
<input type="submit" value="Add to cart" class="button">
</div>
</form>
</article>
У меня все остальные разделы кода работают нормально.Я хотел бы отобразить приведенный выше код, используя эту функцию рендеринга.Однако у меня возникли проблемы с моей функцией рендеринга
render: function() {
var e = this.state.inBasket ? "is-inBasket " : "",
t = {
transitionDelay: .25 * this.props.index "s"
};
return n.createElement("article", {
style: t,
className: "column_grid_5"
}, n.createElement("div", {
className: "appItem appItem--" e
}, n.createElement("h4", {
className: "appItem-title truncate"
}, n.createElement("div", {
className: "image"
}, this.props.item.name), n.createElement("img", {
className: "",
src: this.props.item.image,
alt: ""
}), n.createElement("hgroup", {
className: ""
}, this.props.item.name), n.createElement("h2", {
className: ""
}), n.createElement("div", {
className: "appItem-price"
}, "$ ", this.props.item.price, ".00"), n.createElement("div", {
className: "appItem-qty"
}, "x ", this.props.item.qty), n.createElement("div", {
className: "basketControls"
}, this.getBasketControls()))))
}
Я получаю этот вывод:
<article style="transition-delay:0s;" class="column_grid_5 itemTransition-enter itemTransition-enter-active" data-reactid=".0.0.0.0.2.0.1.$=1$white:0.0.1.$=1$1:0"><div class="appItem appItem--" data-reactid=".0.0.0.0.2.0.1.$=1$white:0.0.1.$=1$1:0.0"><h4 class="appItem-title truncate" data-reactid=".0.0.0.0.2.0.1.$=1$white:0.0.1.$=1$1:0.0.0"><div class="image" data-reactid=".0.0.0.0.2.0.1.$=1$white:0.0.1.$=1$1:0.0.0.0">Title</div><img class="" src="images/white/1.jpg" alt="" data-reactid=".0.0.0.0.2.0.1.$=1$white:0.0.1.$=1$1:0.0.0.1"><hgroup class="" data-reactid=".0.0.0.0.2.0.1.$=1$white:0.0.1.$=1$1:0.0.0.2">Title</hgroup></h4><h2 class="" data-reactid=".0.0.0.0.2.0.1.$=1$white:0.0.1.$=1$1:0.0.0.3"></h2><div class="appItem-price" data-reactid=".0.0.0.0.2.0.1.$=1$white:0.0.1.$=1$1:0.0.0.4"><span data-reactid=".0.0.0.0.2.0.1.$=1$white:0.0.1.$=1$1:0.0.0.4.0">$ </span><span data-reactid=".0.0.0.0.2.0.1.$=1$white:0.0.1.$=1$1:0.0.0.4.1">21</span><span data-reactid=".0.0.0.0.2.0.1.$=1$white:0.0.1.$=1$1:0.0.0.4.2">.00</span></div><div class="appItem-qty" data-reactid=".0.0.0.0.2.0.1.$=1$white:0.0.1.$=1$1:0.0.0.5"><span data-reactid=".0.0.0.0.2.0.1.$=1$white:0.0.1.$=1$1:0.0.0.5.0">x </span></div><div class="basketControls" data-reactid=".0.0.0.0.2.0.1.$=1$white:0.0.1.$=1$1:0.0.0.6"><button class="addBasket button" data-reactid=".0.0.0.0.2.0.1.$=1$white:0.0.1.$=1$1:0.0.0.6.0">Add to basket</button></div></div></article>
Любые указания в правильном направлении будут оценены
Комментарии:
1. Вы не хотите использовать
jsx
или вы не знаете, что вы можете поместить прямой HTML в свою функцию рендеринга?2. ^ это. Вы можете скопировать / вставить весь свой HTML-код в свой компонент React и изменить несколько специфичных для JSX вещей. facebook.github.io/react/docs/displaying-data.html#jsx-syntax
3. @Gregg я бы, конечно, хотел использовать JSX, если это уместно. Как мне это сделать
4. @MichaelParker У меня все на месте, то, о чем вы просите, потребует, чтобы я переписал свой код. — я рассматриваю простые сценарии createElement и className, поскольку я не могу упорядочить элементы, как в первом HTML-коде в моем вопросе
5. … нет, этого не будет. JSX — это буквально HTML с несколькими измененными атрибутами. Другими словами, скопируйте и вставьте свой HTML, замените все
class
наclassName
, и все готово.
Ответ №1:
Вы действительно должны использовать JSX для этого. Пример:
render: function() {
return (
<article class="column_grid_5 " data-id="2">
<div class="image">
<a href="#"><img src="img/1.jpg" alt=""></a>
<span></span>
</div>
<hgroup>
<h1><a href="#">13</a></h1>
<h2><a href="#">Title</a></h2>
</hgroup>
<form method="post" action="">
<ul>
<li>
<h3>cube</h3>
<strong>R1.90</strong>
<input autocomplete="off" type="text" name="quantity_single">
<label>qty</label>
</li>
<li class="second">
<h3>Pkt</h3>
<strong>R9.06</strong>
<input autocomplete="off" type="text" name="quantity_case">
<label>qty</label>
</li>
</ul>
<div class="buttons">
<a href="#" class="button detail">Details</a>
<input type="submit" value="Add to cart" class="button">
</div>
</form>
</article>
);
}
Я буквально скопировал предоставленный вами HTML и, предполагая, что HTML действителен, это сработает. Теперь все, что вам нужно проработать, это получить данные в ваш HTML из state и / или props.
Комментарии:
1. Я использую это magic.reactjs.net/htmltojsx.htm однако я получаю синтаксическую ошибку
2. Какую ошибку вы получаете? Я не могу прочитать ваш экран отсюда. 😉
3. Я получаю эту сборку.js: 13572 Uncaught SyntaxError: неожиданный токен <строка 13572 в сборке. js имеет <article className=»column_grid_5 » data-id={2}>
4. Какую систему сборки вы используете? Знает ли он, как компилировать JSX? Есть много недостающих деталей, которые делают невозможным решение вашей проблемы. Возможно, пришло время начать новый вопрос теперь, когда я перешел на использование JSX.