0
從udemy獲得一個良好的React課程後,我使用Reflux創建商店,但商店觸發的事件無法被組件捕獲。迴流:組件未從商店獲取觸發的事件
我的問題:爲什麼 使用ImageStore.orderImage(在component.jsx TODO 1)不工作:this.onChange不會被觸發,同時兼具ImageStore.getImage和Actions.orderImage工作。
感謝您的任何幫助。
內component.jsx:
mixins: [
Reflux.listenTo(ImageStore,'onChange')
],
componentWillMount: function() {
//TODO 1: why ImageStore.orderImage does not work: this.onChange will not be triggered
// ImageStore.orderImage(this.props.params.id); // WHY this does not work? this.onChange will not be triggered.
// ImageStore.getImage(this.props.params.id); // this works
Actions.orderImage(this.props.params.id); // this works, will use this method
},
onChange: function() {
console.log("imageComponent: get a new event from imageStore");
this.setState({
image: ImageStore.findImage(this.props.params.id)
});
}
內store.jsx
listenables: [Actions],
getImage: function (imageID) {
API.get('gallery/image/'+imageID)
.then(function(json){
if(this.images){
this.images.push(json.data);
} else {
this.images = [json.data];
}
this.updateStore();
}.bind(this));
},
orderImage: function (imageID) {
console.log("imageStore: get a new image order:", imageID);
var image = _.findWhere(this.images, {id:imageID});
if (!image) {
this.getImage(imageID);
console.log("imageStore: I start to get image:", imageID);
}
else {
console.log("imageStore: I already have the image:", imageID);
this.trigger('change',this.images);
this.updateStore();
}
},
findImage: function (imageID) {
var image = _.findWhere(this.images, {id:imageID});
if (image) {
return image;
} else {
return null;
}
},
updateStore: function() {
console.log("imageStore: trigger the change");
this.trigger('change',this.images);
}