साथी देव!प्रतिक्रिया: ऐपस्टोर श्रोता एक समारोह होना चाहिए
मैं अंडेहेड पर ट्यूटोरियल के लिए धन्यवाद के साथ फ्लक्स/प्रतिक्रिया में खुदाई कर रहा हूं। हालांकि मैंने सुना है कि प्रतिक्रिया चल रही है, मैंने ट्यूटोरियल का पालन करते हुए प्रतिक्रिया पुस्तकालय में कुछ बदलावों के साथ मुलाकात की है।
अब तक मैं उन सभी को ठीक करने में सक्षम हूं। अब, मैं स्टोर से संबंधित एक ईंट की दीवार में भाग गया है। ट्यूटोरियल कहता है, मैं एक शॉपिंग कार्ट बना रहा हूं, जिसमें उपयोगकर्ता अपने कार्ट में चीजें जोड़ सकता है। जटिल नहीं है। वास्तविक जोड़ कार्य करता है, लेकिन पुनः प्रतिपादन ट्रिगर नहीं किया जाता है।
addChangeListener: function(callback) {
this.on(CHANGE_EVENT, callback);
},
कौन सा Uncaught TypeError में परिणाम है: निम्नलिखित कोड जोड़ा त्रुटि (पूर्ण कोड के साथ-साथ नीचे सूचीबद्ध हो जाएगी) देता है श्रोता एक समारोह होना चाहिए। कॉलबैक पैरामीटर अनिर्धारित है (इसलिए वह समस्या है जहां समस्या है)। हालांकि, क्योंकि मैं काम करने के नए प्रतिक्रिया के तरीके से अधिक हूं, मुझे समस्या का पता लगाने में परेशानी हो रही है। निम्नलिखित स्निपेट ट्यूटोरियल से स्टोर है:
var AppStore = assign(EventEmitter.prototype, {
emitChange: function() {
this.emit(CHANGE_EVENT);
},
addChangeListener: function(callback) {
this.on(CHANGE_EVENT, callback);
},
removeChangeListener: function(callback) {
this.removeChangeListener(CHANGE_EVENT, callback);
},
getCart: function() {
return _cartItems;
},
getCatalog: function() {
return _catalog;
},
getCartTotals: function() {
return _cartTotals();
},
dispatcherIndex: AppDispatcher.register(function (payload) {
var action = payload.action;
switch(action.actionType) {
case AppConstants.ADD_ITEM:
_addItem(payload.action.item);
break;
case AppConstants.REMOVE_ITEM:
_removeItem(payload.action.index);
break;
case AppConstants.INCREASE_ITEM:
_increaseItem(payload.action.index);
break;
case AppConstants.DECREASE_ITEM:
_decreaseItem(payload.action.index);
break;
}
AppStore.emitChange();
return true;
})
});
लें ध्यान दें कि यह Egghead.io पर एक ट्यूटोरियल से कोड है और मैं कोई रास्ता नहीं में स्वामी हूं (और यदि वे चाहें तो मैं निकाल देंगे कोड कहा)।
यदि अधिक कोड या स्पष्टीकरण की आवश्यकता है, तो मुझे खुशी होगी!
धन्यवाद लोग :)
संपादित करें 1: घटक है कि बदलने के लिए सुनने के लिए माना जाता है, लेकिन नहीं करता है:
var Cart = React.createClass({
getInitialState: function() {
return cartItems();
},
componentWillMount: function() {
debugger;
AppStore.addChangeListener(this.onChange);
},
componentDidMount: function() {
debugger;
AppStore.addChangeListener(this.handleChange);
},
handleChange: function() {
debugger;
this.forceUpdate();
},
_onChange: function() {
debugger;
this.setState(cartItems());
},
render: function() {
var total = 0;
var items = this.state.items.map(function (item, i) {
var subtotal = item.cost * item.qty;
total +=subtotal;
return (
<tr key={i}>
<td><RemoveFromCart index={i} /></td>
<td>{item.title}</td>
<td>{item.qty}</td>
<td>
<Increase index={i} />
<Decrease index={i} />
</td>
<td>${subtotal}</td>
</tr>
);
});
return (
<table className="table table-hover">
<thead>
<tr>
<th></th>
<th>Item</th>
<th>Qty</th>
<th></th>
<th>Subtotal</th>
</tr>
</thead>
<tbody>
{items}
</tbody>
<tfoot>
<tr>
<td colSpan="4" className="text-right">Total</td>
<td>${total}</td>
</tr>
</tfoot>
</table>
);
}
});
क्या आप समस्या का एक छोटा, कामकाजी उदाहरण प्रदान कर सकते हैं? इसके अतिरिक्त, क्या आपने कोड को डीबग करने का प्रयास किया है * क्यों * कॉलबैक शून्य है? आप "addChangeListener" कहां से कॉल कर रहे हैं? मैं एक घटक मान रहा हूँ? – christopher
अगर मैं कर सकता, तो मैं कुछ 20'श फाइलों और वास्तविक कोड के लिए कॉपीराइट की अतिरिक्त समस्या के बारे में बात कर रहा हूं (क्योंकि मुझे पूरा यकीन नहीं है कि कहा गया कोड की प्रतिलिपि/वितरण के लिए सीमाएं हैं)। असल में, '_addItem (payload.action.item) 'फ़ंक्शन को कॉल किया जाता है जो' Appstore.emitChange() 'पंक्ति को ट्रिगर करता है। बदले में, 'emitChange: function()' पंक्ति को ट्रिगर करता है, जो 'addChangeListener: फ़ंक्शन (कॉलबैक)' पंक्ति को ट्रिगर करता है। स्वाभाविक रूप से, कॉलबैक अपरिभाषित है .. लेकिन मुझे इस पर प्रतिक्रिया करने के बारे में पर्याप्त जानकारी नहीं है:/ – Nickvda
क्यों 'emitChange' कॉल' addChangeListener' क्यों/कैसे करता है? यह नहीं होना चाहिए। ईवेंट उत्सर्जित होने पर कौन सा फ़ंक्शन कहा जाता है? ऐसा लगता है कि आपने अपना कोड सही तरीके से तार नहीं किया है। इसका रिटक्ट बीटीडब्ल्यू के साथ कुछ लेना देना नहीं है। अगर हम नहीं जानते कि 'addChangeListener' कैसे कहा जाता है तो हम वास्तव में आपकी मदद नहीं कर सकते हैं। –