Что эквивалентно синглтону Java в React Native? - PullRequest
1 голос
/ 24 апреля 2019

На самом деле я являюсь разработчиком для Android.Я новичок в 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 ]

2 голосов
/ 24 апреля 2019

Импорт кэшируется , поэтому, если вы экспортируете класс, класс будет кэширован, если вы экспортируете экземпляр, экземпляр будет кэширован

2 голосов
/ 24 апреля 2019

React - это библиотека пользовательского интерфейса, это не входит в ее обязанности. Этот вопрос касается любого приложения JavaScript, а не только React.

Модули JavaScript и, в частности, модули ES оцениваются только один раз при нормальных обстоятельствах, что делает экспорт экспорта единичным:

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

  // a singleton
  export default new AppDelegate;

Класс Singleton потенциально является антипаттерном в JavaScript. Если есть необходимость в одном объекте, он может быть записан как литерал объекта.

0 голосов
/ 24 апреля 2019

Если вам нужен синглтон, не используйте класс вообще. Вместо этого экспортируйте методы как функцию.

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