为什么我们不能在 React Native 中只使用一个公共基础 class?
Why can't we just use a common base class in react native?
在 react-cli 创建的 react native 示例代码中:
https://github.com/facebook/react-native
我们看到 index.ios.js
和 index.android.js
都有完全相同的代码。
我做了一些重构并将这段代码提取到一个通用的 index.base.js
文件中,然后为每台设备重新导入和导出它,它就可以工作了。谁能告诉我为什么首先存在这种重复?
我知道有些组件是特定于每个设备的,但老实说,我不明白为什么 React Native 被吹捧为 'learn once and deploy anywhere',而我刚刚做了这个重构,你实际上可以共享相同的组件如果您愿意,可以在每个设备上对代码进行分级。
您可以只有一个 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 的更多信息。
在 react-cli 创建的 react native 示例代码中:
https://github.com/facebook/react-native
我们看到 index.ios.js
和 index.android.js
都有完全相同的代码。
我做了一些重构并将这段代码提取到一个通用的 index.base.js
文件中,然后为每台设备重新导入和导出它,它就可以工作了。谁能告诉我为什么首先存在这种重复?
我知道有些组件是特定于每个设备的,但老实说,我不明白为什么 React Native 被吹捧为 'learn once and deploy anywhere',而我刚刚做了这个重构,你实际上可以共享相同的组件如果您愿意,可以在每个设备上对代码进行分级。
您可以只有一个 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 的更多信息。