在我们公司,我们有几个为iOS构建的React Native组件.它们都是基于 JavaScript的组件,所以它们也应该在React Native for Android下工作.此外,我们拥有的大多数组件应该只在设计风格上有所不同,因
启用此组件以支持Android的正确方法是什么?我们是否必须使用if检查应用程序平台并相应地更改样式?如果我们想要分离两个文件中的组件,Component.android.js和Component.ios.js,React Native会根据它运行的平台自动检测它需要使用哪一个?
我更喜欢一种非常简单的解决方案.只需使用文件扩展名:.ios. vs .android.例如.看看我的导航我在android nav中使用android工具栏,如果我愿意,我可以使用navigatorIos for ios.应用程序平台将根据扩展名正确加载相应的平台文件.这意味着我只是正常加载它:
var Nav = require('./jsx/Nav');
我喜欢遵循React谈到的声明式方法,因此:
1)按照功能/行为而不是平台来组织文件,因为具有不同扩展名的相同文件将彼此相邻.
2)无论是显性还是隐式平台都不相关,因为当它是不同的平台特定组件时,您只会将文件拆分为扩展(因此这是固有的)
3)永远不需要在代码中处理不同的平台行为.
4)这是一个组合解决方案,正如我已经提到的:跨平台的文件不需要平台扩展(在某些情况下甚至可能不需要扩展的抽象类).
这是一个简单的解决方案,我不知道它对大型项目的扩展程度如何;但我完全是为了声明它的简单性.