所有
当我学习React FLUX时,它会引导我进入Facebook Dispatcher.js: https://github.com/facebook/flux/blob/master/src/Dispatcher.js
我不太了解它的函数和类的语法,任何人都可以告诉它写什么语言吗?是ES6还是TypeScript还是别的什么?我想知道为什么它不需要被编译(或者这需要像babel这样的运行工具才能运行?)
我需要帮助解释的部分内容如下:
register(callback: (payload: TPayload) => void): DispatchToken {
var id = _prefix + this._lastID++;
this._callbacks[id] = callback;
return id;
}
或者
class Dispatcher<TPayload> {
//...
constructor() {
this._callbacks = {};
this._isDispatching = false;
this._isHandled = {};
this._isPending = {};
this._lastID = 1;
}
答案 0 :(得分:3)
它是用ES2015编写的,用Babel编译。 Babel有一整节致力于learing ES2015你应该看看。上面的第一个代码使用&#34;箭头函数&#34;,这是一个保留上下文(this
)的函数简写。例如。这两个是等价的:
var fn = function ( prop ) {/* ... */}.bind(this);
var fn = ( prop ) => {/* ... */};
该代码还使用了FlowType,它是JavaScript的静态类型检查器。 <TPayload>
表示Dispatcher
类相对于TPayload
为polymorphic。也就是说,类可以从Dispatcher
扩展,但使用任何类型的有效负载,静态类型检查器将确保在整个类定义中使用相同的类型。除非您在代码中也使用FlowType,否则可以放心地忽略它。但是,实现可能如下所示:
class MyDispatcher extends Dispatcher<MyStorageType> {
/* ... */
}
现在,静态类型检查器将确保Dispatcher
使用类型TPayload
的所有位置,它实际上将使用类型MyStorageType
。
但足够了解这些细节,因为您并不需要了解它们才能使用Facebook的Flux实用程序。通过遵循reference docs和tutorial,从头开始实现基本调度程序,您可以更好地了解其工作原理。
希望这有帮助!