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

IT技术 reactjs react-native react-native-android react-native-ios
2021-05-05 16:58:36

其实我是一个安卓原生开发者。我是 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;
  }

}

谢谢你。

3个回答

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

JavaScript module和 ES module在正常情况下只评估一次,这使得导出单例:

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

  // a singleton
  export default new AppDelegate;

Singleton 类可能是 JavaScript 中的一种反模式。如果需要一个对象,它可以写成对象字面量。

导入被缓存,因此如果您导出一个类,该类将被缓存,如果您导出一个实例,该实例将被缓存

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

// 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';