React Native中Java单例的等价物是什么?

问题描述 投票:1回答:3

其实我是Android Native Developer。我是React-Native的新手。在Java中,我将用户数据和其他数据保存在Singleton类中,并从其他活动访问。然后我如何在React native中实现此过程,以便从其他组件或React native中的任何替代单例访问数据。

我只是尝试这个,但我收到了像getInstance()未定义的错误。

class AppDelegate {
log = "This is AppDelegate";  

  static myInstance = null;
  static getInstance() {
    if (AppDelegate.myInstance == null) {
      AppDelegate.myInstance = new AppDelegate();
    }

    return this.myInstance;
  }

}

谢谢。

reactjs react-native react-native-android react-native-ios
3个回答
2
投票

导入是缓存的,因此如果导出类,则将缓存该类,如果导出实例,则将缓存该实例


2
投票

React是UI库,这不是它的责任。这个问题会影响任何JavaScript应用程序,而不仅仅是React。

特别是JavaScript模块和ES模块在正常情况下只评估一次,这使得导出单例:

  // exported for extensibility
  export class AppDelegate {...}

  // a singleton
  export default new AppDelegate;

Singleton类可能是JavaScript中的反模式。如果需要一个对象,则可以将其写为对象文字。


-1
投票

如果你需要一个单身人士,根本不要使用一个班级。将方法导出为函数。

// File app-delegate.js
let privateIstanceValue;
export const method1 = () => //do something;
export const method2 = () => //do something again;

使用import * as导入

import * as appDelegate from './app-delegate.js';
© www.soinside.com 2019 - 2024. All rights reserved.