javascript - 如何在react-native中动态加载模块?

标签 javascript reactjs react-native ecmascript-6 es6-modules

我目前正在努力添加对 Sentry.io 的支持在我的 react native 应用程序中。我用react-native-sentry包,并且有一个要求:仅当某个常量设置为 true 时才应导入包,例如 SHOULD_USE_SENTRY。所有哨兵配置都存储在一个单独的文件中,该文件还公开了 2 个方法:setupSentrycaptureException,它们在应用程序根目录的 componentDidMount 中使用code> 和 componentDidCatch 分别。如何在根组件中动态加载这些方法,以便当 SHOULD_USE_SENTRY 的值为 false 时,调用我的方法后不会抛出错误?我希望我足够清楚地描述了我的问题。

最佳答案

您无法根据条件导入。

但是您可以通过创建 2 个入口点来执行类似的操作: folderA/index.jsfolderB/index.js

folderA/index.js 您可以在其中导入模块 并通过 props 将其传递给您的应用程序。

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 版本使用以下命令之一:

react-native start --root folderA

react-native start --projectRoot folderA

通过指定 --root--projectRoot,您将告诉打包程序在您想要的文件夹中查找 index.js 文件。如果您想要为您的项目进行不同的配置,您可以使用此技巧。

关于javascript - 如何在react-native中动态加载模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52449396/

相关文章:

javascript - 在 React Native 中使用上下文

javascript - ES6 上的动态导入

javascript - Css 书籍布局(水平 Accordion )

android - 我应该更新哪个 build.gradle 文件以在 React Native Android 项目中添加结构数字

javascript - 如何正确处理 React.js 中的对象元素

javascript - 如何访问另一个组件的状态

android - 如何在 React Native Android 中添加自定义字体

javascript - 使用js同时显示两个ul标签

javascript - Redux-form:在模式弹出时如何从 API 调用加载值(编辑模式)到表单?

javascript - 为什么自动对焦在 ReactJS 和 antd 中不起作用?