Почему компоненты при монтаже не используют синглтон существующего магазина с обратным холодильником?
Я использую рельсы реагирования для рендеринга внешнего интерфейса сервера.
Я чувствую, что мои магазины Reflux создаются, но не используются повторно. Я знаю, что каждый раз, когда я перезагружаю страницу в разделе "Разработка и производство", init()
функция в моем UserStore
называется.
Согласно документации
во время монтирования эти компоненты будут либо создавать экземпляр синглтона класса (если это еще не сделано), либо использовать существующий синглтон (если это было сделано).
Я не уверен, как проверить UserStore.singleton либо.
import Reflux from 'reflux';
var triggerablesMixin = require('reflux-triggerable-mixin')(Reflux);
import UserActions from '../actions/UserActions';
const UserStore = Reflux.createStore({
mixins: [triggerablesMixin],
listenables: UserActions,
triggerables:[
'onUserSignUpCompleted',
'onUserSignUpFailed',
'onUserSignInCompleted',
'onUserSignInFailed',
'onUserSignOutCompleted',
'onUserSignOutFailed',
'onUserPasswordResetCompleted',
'onUserPasswordResetFailed',
'onUserGetMeCompleted',
'onUserGetMeFailed',
'onUserPutMeCompleted',
'onUserPutMeFailed',
'onUserPutCompleted',
'onUserPutFailed',
],
getDefaultUserData() {
return {
status: "",
user_message: "",
user: {
id: null,
name: null,
email: null,
tel: null,
tel_country_code: null,
}
};
},
init() {
this.data = this.getDefaultUserData();
this.initialLogin();
},
getInitialState() {
return this.data;
},
initialLogin() {
UserActions.signIn({});
},
// without listenables
// we would write this.listenTo(UserActions.signUp.complete, onUserSignUpCompleted)
// in addition to the code below
onSignUpCompleted(res) {
this.data = res.body;
this.onUserSignUpCompleted.trigger(this.data);
},
onSignUpFailed(res) {
this.data = res.body;
this.onUserSignUpFailed.trigger(this.data);
},
// we could also listen to
// onSignIn
// onSignIn() {
// debugger
// },
onSignInCompleted(res) {
this.data = res.body;
this.onUserSignInCompleted.trigger(this.data);
this.trigger(this.data);
},