gpt4 book ai didi

react-native - 在 react-native 中有条件地加载模块

转载 作者:行者123 更新时间:2023-12-04 18:58:53 26 4
gpt4 key购买 nike

我正在努力制作一个可以在 NodeJS 和 ReactNative 上工作的库。 ReactNative 不支持某些原生 NodeJS 模块,因此我尝试有条件地加载它们。然而这不起作用:

if (true) {
require('a'); // module 'a' works in ReactNative
} else {
require('b'); // module 'b' doesn't work in ReactNative
}

不幸的是,这两个都需要执行的语句和加载“b”会引发异常:(

现在我有以下选择:
  • 要创建一个新版本的库,特定于 ReactNative,只使用在那里工作的模块。
  • 我听说您可以在 package.json 中指定“react-native”,这将有助于解决此问题。但是,我在任何地方都找不到文档,它是否记录在某个地方?

  • 一般来说,您会建议如何让我的库同时在 Node 和 ReactNative 中工作?

    谢谢,

    最佳答案

    我想通了——这是使用 package.json 中的“react-native”属性完成的。 .在那里,您可以用另一个模块替换一个模块,或者为 ReactNative 禁用它(通过将其值设置为 false )。如果您用另一个模块替换该模块,则该模块也应添加到依赖项列表中。

    在上面的示例中,对于模块 breact-native您必须设置的属性false作为值(value)。

    在 package.json 中,这可能如下所示:

    "dependencies": {
    "c": "^1.0.0"
    },
    "react-native": {
    "a": "c",
    "b": false
    }

    上面的代码将替换模块 a带模块 c在 ReactNative 的情况下,它将抑制模块 b 的加载(它看起来像一个空对象)。

    关于react-native - 在 react-native 中有条件地加载模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43055748/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com