【问题标题】:With flux, how do I get the right Store called使用通量,我如何获得正确的商店调用
【发布时间】:2016-07-15 17:29:15
【问题描述】:

我是 react/flux 架构的新手,但我遗漏了一些东西……我想。我有两个商店,SubjectsStore.js 和 WorkDoneStore.js,其中一个 AppActions 执行调度(代码 sn-ps 都在下面)。我的印象是,任何向 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);

  },
...

【问题讨论】:

    标签: javascript flux


    【解决方案1】:

    在查看我的 Webpack 输出时,我注意到 WorkDoneStore.js 没有被包含在内。通过调用它来强制包含它,它现在可以工作了。

    【讨论】:

    • 如果这解决了您的问题,您应该单击答案旁边的复选标记。这可以让其他人知道问题已得到解答以及正确答案是什么。
    猜你喜欢
    • 1970-01-01
    • 2016-07-22
    • 1970-01-01
    • 2022-12-04
    • 2016-02-06
    • 2021-03-30
    • 1970-01-01
    • 1970-01-01
    • 2012-07-17
    相关资源
    最近更新 更多