I just started using refluxjs/react with webpack. I really liked the listenAndPromise
async pattern, but I've encountered a problem. I got the following code:
Action:
var ResumeService = require('services/ResumeService');
var ResumeActions = Reflux.createActions({
'save': {
asyncResult: true
}
});
ResumeActions.save.listenAndPromise(ResumeService.save);
ResumeService:
var http = require('utils/http');
var ENDPOINT = '/resumes/';
module.exports = {
save: function() {
return http.post(ENDPOINT + 'save', {
resume: ??????????
});
},
}
And part of the store:
var RendererActions = require('actions/RendererActions');
var ResumeStore = Reflux.createStore({
listenables: [ResumeActions],
resume: Immutable.fromJS(ResumeExample), //nested object
onSaveCompleted: function(id) {
.....
},
onSaveFailed: function() {
....
}
...
});
So when a user makes change, the resume variable in the store is updated. Now the user wants to save the changes and he hit a button which triggers Action.save()
. Here comes my problem: How can I pass the resume
variable from the store to the service
file above?
The weird thing is that if I do var Store = require('stores/ResumeStore');
in the service
file, it has the value object {}
, this happens only if I include the store in the service, I think it has something to do with endless loop requiring or something like this. ( Store requires Action, Action requires Service, Service requires Store )
Why don't you just add the resume as a parameter in the save method in ResumeService?
Then
ResumeActions.save.listenAndPromise(ResumeService.save);
should work. listenAndPromise just passes the action payload through to its callback argument.