2016-03-28 55 views
0

我是新的反應/通量架構,我錯過了一些東西......我想。我有兩個Stores,SubjectsStore.js和WorkDoneStore.js,它們具有派遣的AppActions(代碼片段全部在下面)。我覺得任何向AppDispatcher註冊的商店都會收到有關該事件的通知,並且每個商店都有義務處理正確的操作類型。似乎沒有任何其他方式來控制哪個Store被調用。就我而言,我已經獲得一個SubjectStores註冊被調用,但我的WorkDoneStore沒有被調用。我忽略了什麼/做錯了什麼。隨着助焊劑,我如何得到正確的商店

AppActions.js

import AppDispatcher from './AppDispatcher.js'; 

import WorkDoneConstants from '../constants/WorkDoneConstants.js'; 
import SubjectConstants from '../constants/SubjectConstants.js'; 

var AppActions = { 
    addWorkDoneItem:function(item){ 
    console.log("In app actions addWorkDone"); 
    console.log(WorkDoneConstants.WORKDONE_INSERT); 
    AppDispatcher.dispatch({ 
     actionType:WorkDoneConstants.WORKDONE_INSERT, 
     item:item 
    }) 
    } 
} 
module.exports = AppActions; 

SubjectsStore.js

var AppDispatcher = require('../dispatcher/AppDispatcher'); 
var SubjectConstants = require('../constants/SubjectConstants'); 
var EventEmitter = require('events').EventEmitter; 
... 
AppDispatcher.register(function(action) { 
    var text; 
    console.log("why am I in the subjectStore?"); 
    console.log(action.actionType); 
    console.log(action.item); 
    switch(action.actionType) { 
    case SubjectConstants.SUBJECT_CREATE: 
     text = action.text.trim(); 
... 

WorkDoneStore.js

... 
AppDispatcher.register(function(action) { 
    var text; 
    console.log("In WorkDoneStore"); 
    console.log(action); 
    switch(action.actionType) { 
    case WorkDoneConstants.WORKDONE_INSERT: 
     item = action.item; 
     if (item.subject !== '') { 
     create(item); 
     WorkDoneStore.emitChange(); 
     } 
     break; 
... 

我的組件

... 
    handleSubmit: function(e){ 
    e.preventDefault(); 
    var item = { 
     subject:this.state.subject, 
     workDone:this.state.workDone, 
     minutes:this.state.totalMinutes, 
     startStop:this.state.startStop, 
    }; 
    console.log("before AppActions."); 
    AppActions.addWorkDoneItem(item); 

    }, 
... 

回答

0

在查看我的Webpack輸出時,我注意到WorkDoneStore.js沒有包含在內。通過強制它被包含在通話中,它現在正在工作。

+0

如果這解決了您的問題,您應該點擊答案旁邊的複選標記。這讓其他人知道這個問題得到了回答,並且正確答案是什麼。 –