React-Flux:AppDispatcher.register出错

Ben*_*Ben 8 javascript flux react-jsx reactjs-flux

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

除了Store之外的所有东西都运行良好,但是一旦它命中AppDispatcher.register,Flux就会抛出以下错误:

Uncaught TypeError: Cannot set property 'ID_1' of undefined
Run Code Online (Sandbox Code Playgroud)

这是导致错误的文件的代码,但我已经把整个项目放在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;
Run Code Online (Sandbox Code Playgroud)

Ben*_*Ben 18

由于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;
Run Code Online (Sandbox Code Playgroud)

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

  • 我肯定会这么称呼它.转到Youtube并向我展示*如何使用Flux创建简单应用程序的教程.此外,虽然肯定有关于Flux的官方文档,但对于那些只是"得到它"的经验丰富的工程师来说,它是不直观的,而不是需要更多手持的更多初级工程师.因此,[@rynclark(https://twitter.com/rynclark)的评论 - "如果你和我一样,你想与反应,你更可能将已经签出焊剂走得更远,有一目了然,关闭标签,然后重新评估你作为Javascript开发人员的生活." (6认同)
  • 仅供参考,@ fisherwebdev,我制作了这个视频,以帮助初级程序员了解Flux.[http://youtu.be/o5E894TmHJg](http://youtu.be/o5E894TmHJg) (2认同)