Я немного поиграю, чтобы отреагировать на создание кнопки "Добавить в корзину". Вот мой код.
var ProductPurchase = React.createClass({
handleSubmit: function(e){
e.preventDefault();
$.ajax({
url: "/cart/add.js",
method: "post",
dataType: "json",
data: {
"id": this.props.variantId,
"quantity": this.props.quantity,
},
success: function(data) {
// emit cart added event
}.bind(this),
error: function(xhr, status, err) {
// emit error event (cart added)
}.bind(this)
});
},
getDefaultProps: function(){
return {
quantity: 1,
variantId: 231634908,
buttonText: "Add to cart"
}
},
render: function() {
return (
<div className="productPurchase">
<form action="/cart/add" method="post" enctype="multipart/form-data" onSubmit={this.handleSubmit}>
<input type="hidden" name="quantity" value={ this.props.quantity } />
<input type="hidden" name="id" value={ this.props.variantId } />
<button type="submit">{this.props.buttonText}</button>
</form>
</div>
);
}
});
Что мне интересно, так это обработчик ajax. Я почти уверен, что вся суть реакции - это взаимодействие между компонентами, за исключением того, что я не знаю, куда привести эти события. Я мог бы представить пару различных компонентов, таких как индикатор подсчета корзины, если успех или предупреждение об ошибке, если сбой, но я точно не знаю, как использовать их. Это целая точка диспетчеров потока?