나는 "장바구니에 추가 버튼"을 만들기 위해 약간의 반응을 보이고 있습니다. 여기 내 코드가있다.반응으로 글로벌 이벤트 방출 및 처리
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 처리기입니다. 나는이 이벤트들을 어디로 이끌어야할지 모르겠다는 점을 제외하고는 반응의 요점이 구성 요소 간의 상호 운용성이라는 것을 확신한다. 성공하면 카트 카운트 표시기와 같은 몇 가지 구성 요소를 상상할 수 있습니다. 실패한 경우 오류 경고가 표시되지만이를 정확히 파악하지 못합니다. 이게 flux's dispatchers의 요점입니까?
참고 :이 componentWillUnmount에 정리하는 방법을 의미하는 등록을 취소 할 수있는 방법을 제공하지 않기 때문에 당신이 당신의 구성 요소에 연결된 Dispatcher를 사용하지 마십시오. 상점없이 사용하려면 일반 이벤트 이미 터 (예 : 노드에서 events.EventEmitter) 만 사용하십시오. – FakeRainBrigand
각 모듈의 싱글 톤 디스패처에 대한 참조를 어떻게 얻습니까? – crush