DevSettings.reload () для выхода в React Native - PullRequest
0 голосов
/ 23 апреля 2020

Проблема

Я перевожу функции выхода из моего гибридного приложения из нативного в режим реагирования нативного.

Требования:

  • Работает в производстве и на устройство
  • Переходит к экрану приложения root (экран входа в систему)
  • Очищает хранилище с избыточностью
  • [приятно иметь] Отменяет любые запросы на полет

Изначально мы планировали сделать что-то вроде этого: как восстановить состояние хранилища

Идея

Начиная с React Native 0.62.0, теперь у нас есть доступ к модулю DevSettings. DevSettings имеет собственный мост, который может перезагрузить реагирующую среду. Но действительно ли DevSettings только для сред разработки?

Экспортируйте модуль DevSettings, добавьте метод addMenuItem (cc068b0551 от @janicduplessis)

Вопрос

  1. Каковы компромиссы для использования перезагрузки по сравнению с выходом из системы с редукционным действием?
  2. Должен ли я использовать перезагрузку в производственном приложении?

Ответы [ 2 ]

0 голосов
/ 23 апреля 2020

Вот строка кода, которая запрещает использование devSettings в prod

import NativeDevSettings from '../NativeModules/specs/NativeDevSettings';
import NativeEventEmitter from '../EventEmitter/NativeEventEmitter';

class DevSettings extends NativeEventEmitter {
  ...
  reload(reason: string) {
    if (typeof NativeDevSettings.reloadWithReason === 'function') {
      NativeDevSettings.reloadWithReason(reason || 'Uncategorized from JS');
    } else {
      NativeDevSettings.reload();
    }
  }
  ...
}

// Avoid including the full `NativeDevSettings` class in prod.
class NoopDevSettings {
  addMenuItem(title: string, handler: () => mixed) {}
  reload() {}
}

module.exports = __DEV__ ? new DevSettings() : new NoopDevSettings();

из Библиотеки / Утилиты / DevSettings

0 голосов
/ 23 апреля 2020

Модуль DevSettings предоставляет методы для настройки параметров для разработчиков в разработке .

DevSettings только для среды разработки, он не будет работать в выпуске Режим. Лучшее решение - перейти по ссылке , которую вы указали в своем вопросе

...