我是反应原生编码的新手,但在Objective-c和swift编码方面经验丰富,并希望在反应原生中使用单例模式。 我试图找出其他StackOverflow答案的解决方案,但大多数都只创建单例函数,如下面的代码:
var Singleton = (function () {
var instance;
function createInstance() {
var object = new Object("I am the instance");
return object;
}
return {
getInstance: function () {
if (!instance) {
instance = createInstance();
}
return instance;
}
};
})();
function run() {
var instance1 = Singleton.getInstance();
var instance2 = Singleton.getInstance();
alert("Same instance? " + (instance1 === instance2));
}
正如我们在上面的代码中看到的,我们创建的是单例函数而不是类。 如果有任何方法可以创建单例类并将该类中的多个变量作为objective-c或swift传递,请告诉我。 注意:如果我的方向错误,也请通知我。
答案 0 :(得分:6)
你可以使用类似的东西
class SingletonClass {
static instance = null;
static createInstance() {
var object = new SingletonClass();
return object;
}
static getInstance () {
if (!SingletonClass.instance) {
SingletonClass.instance = SingletonClass.createInstance();
}
return SingletonClass.instance;
}
}
var instance1 = SingletonClass.getInstance();
var instance2 = SingletonClass.getInstance();
答案 1 :(得分:5)
这是我对单身人士课程的实施......
Controller.js
export default class Controller {
static sharedInstance = Controller.sharedInstance == null ? new Controller() : this.sharedInstance
printHelloWorld() {
console.log("\n\tHello World... \(^_^)/ !!")
}
}
用法:
import Controller from 'Controller.js'
Controller.sharedInstance.printHelloWorld()
答案 2 :(得分:-1)
单一模式在JS生态系统中并没有被广泛使用。你应该研究的是http://mobx.js.org。 MobX是一个库,允许您创建可观察对象以存储应用程序的数据。您为每个您想要的域实例化一个商店,并对该商店进行编辑以更改应用程序状态。