我怎么知道我的代码是否作为React Native运行

jsd*_*rio 10 javascript react-native

我希望能够为所有平台导出一个包,但我使用一些纯粹的JS回退的本机绑定.通常情况下,我会注意到对象windowexports存在的区别.

如何在React Native上实现这一目标?

Bra*_*ugh 17

这是检查代码是否在Web,nodejs或react-native上的方法:

if (typeof document != 'undefined') {
  // I'm on the web!
}
else if (typeof navigator != 'undefined' && navigator.product == 'ReactNative') {
  // I'm in react-native
}
else {
  // I'm in node js
}
Run Code Online (Sandbox Code Playgroud)

资料来源:

  • 注意:在 2022 年的 React Native 0.67 中,这效果不太好。我无法提出实际的解决方案,因为我们最终不需要这样做,但请注意。 (3认同)
  • navigator.product === 'ReactNative' 的替代品是什么?@BradByte (3认同)
  • 这是一个我正在分叉的第三方库,可以在任何地方使用。它确实是反应不可知的。 (2认同)
  • 必须更新,因为我发现了反应性填充“过程” (2认同)
  • 请注意,自 2022 年 10 月起,“navigator.product”已弃用,不建议进一步使用。 (2认同)