为什么我们不能在反应原生中使用公共基类?

时间:2017-05-06 09:04:42

标签: react-native react-native-android react-native-ios

在react-cli创建的反应原生样本代码中:

https://github.com/facebook/react-native

我们发现index.ios.jsindex.android.js都具有完全相同的代码。

我做了一些重构并将此代码解压缩到一个公共index.base.js文件中,然后重新导入并为每个设备重新导出它并且它可以工作。任何人都可以告诉我为什么这个重复存在于第一位?

我知道有些组件是针对每个设备特定的,但说实话我不明白为什么反应原生被吹捧为“学习一次并在任何地方部署”,当我从这个重构时我实际上可以共享相同的组件如果您愿意,可以在每个设备上使用级别代码。

1 个答案:

答案 0 :(得分:1)

您可以只有一个index.js,事实上,只要有可能,就可以通过这种方式在单独的.ios.js.android.js文件中执行此操作。

示例代码尝试向您显示,当您需要时,您可以创建这两个文件,并在每个平台上加载正确的文件。

如果平台特定代码只是组件的一小部分,您仍然可以将其放入一个.js文件中,并使用Platform模块根据平台更改行为。

import {Platform} from 'react-native'

...

const message = Platform.OS === 'ios'
  ? 'Hello, iOS user!'
  : 'Hello, Android user!'

在React Native文档中查看有关platform specific code的更多信息。