在react-cli创建的反应原生样本代码中:
https://github.com/facebook/react-native
我们发现index.ios.js
和index.android.js
都具有完全相同的代码。
我做了一些重构并将此代码解压缩到一个公共index.base.js
文件中,然后重新导入并为每个设备重新导出它并且它可以工作。任何人都可以告诉我为什么这个重复存在于第一位?
我知道有些组件是针对每个设备特定的,但说实话我不明白为什么反应原生被吹捧为“学习一次并在任何地方部署”,当我从这个重构时我实际上可以共享相同的组件如果您愿意,可以在每个设备上使用级别代码。
答案 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的更多信息。