vic*_*aba 31 javascript reactjs
我在3年内一直在使用JavaScript的小片段,但现在我正在构建一个React应用程序,我正在进入它.有一件事我不明白.React使用Dispatcher和Stores来构建其Flux模式,我没有得到的是这个Dispatcher在所有应用程序中都可见,因为Actions使用调度程序来调度操作,并且Stores注册到Dispatcher以获得通知(所以它不是每次新的Dispatcher).那么,我怎样才能实现这个"全球"范围或其他所谓的范围呢?如何使用ES6类(模块)实现这一目标?
由于我缺乏编写真正的JavaScript的经验,这个问题可能不清楚,我希望通过社区评论,我将能够安排.
Dav*_*hta 61
无论您身在何处,都可以随时为window.MyClass = whatever(global.MyClassfor nodejs)分配变量,并从应用程序中的任何其他文件中访问这些值.然而,这并不总是在您的应用程序中全局共享数据的最佳方式.nodejs(或ES6中的AMD)中的模块加载器接受您导出的任何内容并对其进行缓存.让我们说你有一个像这样的文件:
MyModule.js:
class MyClass {
constructor() {
this.someData = 55;
}
}
export default (new MyClass);
Run Code Online (Sandbox Code Playgroud)
现在每当我们从其他地方需要这个文件时,我们总是被给予SAME实例MyClass.这意味着:
file1.js:
import MyClass from './MyModule'
MyClass.someData = 100;
Run Code Online (Sandbox Code Playgroud)
file2.js:
import MyClass from './MyModule'
console.log(MyClass.someData);
Run Code Online (Sandbox Code Playgroud)
这称为单例模式,我们在整个应用程序中传递您的类的一个公共实例.因此,通过这种方式,我们可以MyClass从不同的文件访问相同的实例,所有这些都不会污染全局范围(我们避免分配global.MyClass但完成相同的功能).
你要找的是创建一个单身人士.来自http://amanvirk.me/singleton-classes-in-es6/.
let instance = null;
export default class Cache{
constructor() {
if (!instance) { instance = this; }
this.time = new Date()
return instance;
}
}Run Code Online (Sandbox Code Playgroud)
我测试了它,它的工作原理.您只需使用this.singletonFunction = function(){}替换this.time = new Date().你想在哪里使用它然后进行导入
let aSingleton = (new importName()).singletonFunction;Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
49225 次 |
| 最近记录: |