我正在尝试在Flux-React中设置最基本的应用程序。它的唯一目标是触发Action,该Action通过Dispatcher发送到已在Dispatcher注册的商店。存储将payload记录到控制台。

除商店外,其他所有东西都运行良好,但是一旦击中AppDispatcher.register,Flux就会引发以下错误:

Uncaught TypeError: Cannot set property 'ID_1' of undefined

这是导致错误的文件的代码,但是我将整个项目放在https://github.com/bengrunfeld/react-flux-dispatcher-error上,您可以在src/js/stores/AppStores.js中找到有问题的文件
var AppDispatcher = require('../dispatcher/AppDispatcher');
var EventEmitter = require('events').EventEmitter;
var AppConstants = require('../constants/AppConstants');
var assign = require('object-assign');


var CHANGE_EVENT = 'change';

var AppStore = assign({}, EventEmitter.prototype, {
  emitChange: function() {
    this.emit(CHANGE_EVENT);
  }
});

AppDispatcher.register(function(payload){
  console.log(payload);
  return true;
})

module.exports = AppStore;

最佳答案

由于Facebook Flux圣经比例文档的备忘,我不知道我使用的是以前版本的代码。

AppDispatcher.js中,您需要使用new关键字以以下方式定义AppDispatcher:

var Dispatcher = require('flux').Dispatcher;
var assign = require('object-assign');

var AppDispatcher = assign(new Dispatcher(), {
  handleViewAction: function(action) {
    this.dispatch({
      source: 'VIEW_ACTION',
      action: action
    });
  }
});

module.exports = AppDispatcher;

这是带有工作代码的存储库的链接:https://github.com/bengrunfeld/react-flux-simple-app

关于javascript - React-Flux : Error with AppDispatcher.寄存器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28822881/

10-12 01:03