他们的__tests __ / TodoStore-test.js文件: https://github.com/facebook/flux/blob/master/examples/flux-todomvc/js/stores/tests/TodoStore-test.js
他们的js / dispatcher / AppDispatcher.js文件: https://github.com/facebook/flux/blob/master/examples/flux-todomvc/js/dispatcher/AppDispatcher.js
在他们的情况下,调度员就是这样:
var Dispatcher = require('flux').Dispatcher;
module.exports = new Dispatcher();
在他们的测试beforeEach
中重置:
AppDispatcher = require('../../dispatcher/AppDispatcher');
现在,在我自己的项目中,我想使用ES6的做事方式。不过我不知道怎么回事。 require
和import
之间存在差异。
我的调度员:
import { Dispatcher } from 'flux';
var dispatcher = new Dispatcher({
logLevel: 'ALL'
});
export default dispatcher;
作为应用中的一部分 - 在我的应用中正常工作,但上面的require
示例没有。
需要转换为ES6 import
的测试部分:
beforeEach(function() {
AppDispatcher = require('./../src/dispatcher/dispatcher');
TodoStore = require('./../src/stores/TodoStore');
callback = AppDispatcher.register.mock.calls[0][0];
});
但是,当然,这不起作用:
beforeEach(function() {
AppDispatcher = import './../src/dispatcher/dispatcher';
// snip
});
或者:
import dispatcher from './../src/dispatcher/dispatcher';
beforeEach(function() {
AppDispatcher = new dispatcher();
// snip
});
我现在只是通过反复试验来做,只是为了编写测试而花费了太多时间。
我的思考过程:
他们需要调度员文件输出的任何内容,总是new Dispatcher()
。
就我而言,我正在创建一个new Dispatcher
和export
该实例。相反,我可能不需要在调度程序文件中实例化它,但是将其保留到export
,例如:export default new Dispatcher()
,但这看起来很糟糕。
但无论我尝试什么,我都会遇到如下错误:
TypeError: Cannot read property 'register' of undefined
有没有人知道如何让这个运行起来? 很有责任!
答案 0 :(得分:0)
ES6导入语法实际上是import defaultMember from 'module-name';
所以在你的情况下,它将是
import AppDispatcher from './../src/dispatcher/dispatcher';
import TodoStore from './../src/stores/TodoStore';
有关ES6导入的详细信息,请阅读https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import