React native-创建单例模式的最佳方式

时间:2017-05-17 11:42:35

标签: reactjs react-native singleton

我是反应原生编码的新手,但在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传递,请告诉我。 注意:如果我的方向错误,也请通知我。

3 个答案:

答案 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是一个库,允许您创建可观察对象以存储应用程序的数据。您为每个您想要的域实例化一个商店,并对该商店进行编辑以更改应用程序状态。