2017-05-17 57 views
2

我是反應本地編碼的新手,但在Objective-C和Swift編碼方面經驗豐富,並且希望在react-native中使用單例模式。 我試圖找出其他StackOverflow的答案的解決方案,但他們大多是爲下面的代碼創建只有單功能:React native-創建單例模式的最佳方法

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。 注意:如果我走錯了方向,也請通知我。

回答

-1

單體模式在JS生態系統中並沒有太多用處。你應該看看的是http://mobx.js.org。 MobX是一個庫,允許您創建可觀察對象來存儲應用程序的數據。您爲每個您想要的域名實例化一個商店,並對該商店進行編輯以更改應用程序狀態。

1

您可以使用類似的東西

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(); 
+0

將如何你訪問同一個實例f從不同的組件? – shinzou

+1

你可以在單例類的末尾寫下這段代碼: const singletonClass = SingletonClass.getInstance(); 導出默認單例類 然後導入該文件與任何其他組件 –

4

這裏是我實施單獨的類...

Controller.js

export default class Controller { 
    static sharedInstance = this.sharedInstance == null ? new Controller() : this.sharedInstance 

    printHelloWorld() { 
     console.log("\n\tHello World... \(^_^)/ !!") 
    } 
} 

用法:

import Controller from 'Controller.js' 

Controller.sharedInstance.printHelloWorld() 
相關問題