Как динамически загрузить модуль в реагировать на родной? - PullRequest
0 голосов
/ 21 сентября 2018

В настоящее время я работаю над добавлением поддержки Sentry.io в моем приложении "native-native".Я использую пакет react-native-sentry , и существует одно требование: пакет следует импортировать, только если для некоторой константы установлено значение true, например SHOULD_USE_SENTRY.Вся конфигурация часового хранилища хранится в отдельном файле, который также предоставляет 2 метода: setupSentry и captureException, которые используются в корне приложения в componentDidMount и componentDidCatch соответственно.Как я могу динамически загрузить эти методы в корневой компонент, чтобы при значении SHOULD_USE_SENTRY равном false я не получал ошибки после вызова моих методов?Надеюсь, я достаточно ясно описал свою проблему.

1 Ответ

0 голосов
/ 21 сентября 2018

Вы не можете импортировать по условию.

Но вы можете сделать нечто подобное, создав 2 точки входа: folderA / index.js и folderB / index.js

folderA / index.js там вы импортируете свой модуль и передаете его в приложение через реквизиты.

import {someModule} from 'someModule';
render(){
    return(<App module={someModule} />);
}

folderB / index.js там вы не импортируете модуль, а вместо этого передаете null (или любой другойдругое значение, которое вы хотите)

render(){
    return(<App module={null} />);
}

тогда в вашем компоненте приложения теперь может быть условие

App.js

if(this.props.module != null){
    this.props.module.someFunction(); 
}

Осталось только выбрать правильную точку входа при запуске упаковщика.Используйте одну из приведенных ниже команд в зависимости от версии rn:

реактивный запуск - корневая папка A

реактивный запуск --projectRoot папка A

Указывая - root или - projectRoot , вы указываете упаковщику найти файл index.js в нужной папке.Вы можете использовать этот трюк, если вы хотите другую конфигурацию для вашего проекта.

...