我可以从任何其他库获得Electrode native的功能

时间:2018-04-13 10:36:43

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

我已经创建了一个关于本机的应用程序。它只有2个活动,现在我想将它们集成到我现有的Android应用程序const ExclamationIcon = props => ( <svg {...props} viewBox="0 0 140 140"> <circle fill="#f66868" cx="70" cy="70" r="70" /> <g transform="translate(58,30)"> <path fill="white" d="M 11,56.7 L 9,56.7 L 4.2,13.2 C 4,11.4 4,10 4,9 C 4,7 4.5,4.9 5.6,3.5 C 7,2.2 8.3,1.5 10,1.5 C 11.7,1.5 13,2.2 14.4,3.5 C 15.5,4.9 16,7 16,9 C 16,10 16,11.4 15.8,13.2 z M 10,64 A 6,6 0 1,1 10,76 A 6,6 0 1,1 10,64 z"/> </g> </svg> ); class Hello extends React.Component { render() { return ( <div> asdas <svg className="main"> <rect x="20" y="20" width="100" height="40" fill="red" /> <ExclamationIcon width="30" x="0" y="0" /> </svg> </div> ); } } ReactDOM.render( <Hello name="World" />, document.getElementById('container') );

我发现核心React-native不提供生成(Native android app).文件或.arr的功能。为此,我们需要使用native code

我的问题是:有没有其他方法从react-native代码生成本机(iOS / android)代码?还有其他工具吗?如果他们这样做,Electrode Native提供了哪些其他功能可以让人考虑一下?

2 个答案:

答案 0 :(得分:2)

React Native提供了一个模块,用于检测运行应用程序的平台。您可以使用检测逻辑来实现特定于平台的代码。当只有组件的一小部分是特定于平台时,请使用此选项。

&#13;
&#13;
import {Platform, StyleSheet} from 'react-native';

const styles = StyleSheet.create({
  height: Platform.OS === 'ios' ? 200 : 100,
});
&#13;
&#13;
&#13;

在Android上运行时,在iOS和Android上运行时,Platform.OS将是ios。

还有一个Platform.select方法可用,给定一个包含Platform.OS作为键的对象,返回当前正在运行的平台的值。

&#13;
&#13;
import {Platform, StyleSheet} from 'react-native';

const styles = StyleSheet.create({
  container: {
    flex: 1,
    ...Platform.select({
      ios: {
        backgroundColor: 'red',
      },
      android: {
        backgroundColor: 'blue',
      },
    }),
  },
});
&#13;
&#13;
&#13;

这将导致容器在两个平台上都具有flex:1,iOS上为红色背景颜色,Android上为蓝色背景颜色。

由于它接受任何值,您还可以使用它来返回特定于平台的组件,如下所示:

&#13;
&#13;
const Component = Platform.select({
  ios: () => require('ComponentIOS'),
  android: () => require('ComponentAndroid'),
})();

<Component />;
&#13;
&#13;
&#13;

检测Android版本 在Android上,Platform模块还可用于检测运行应用程序的Android平台的版本:

&#13;
&#13;
import {Platform} from 'react-native';

if (Platform.Version === 25) {
  console.log('Running on Nougat!');
}
&#13;
&#13;
&#13;

检测iOS版本 在iOS上,Version是 - [UIDevice systemVersion]的结果,它是一个包含当前操作系统版本的字符串。系统版本的一个例子是&#34; 10.3&#34;。例如,要检测iOS上的主要版本号:

&#13;
&#13;
import {Platform} from 'react-native';

const majorVersionIOS = parseInt(Platform.Version, 10);
if (majorVersionIOS <= 9) {
  console.log('Work around a change in behavior');
}
&#13;
&#13;
&#13;

答案 1 :(得分:0)

回答what other features Electrode native offers to make one consider it?

上的问题
  

在开发,集成和重用多个不同的React Native组件到现有的移动应用程序时,开发人员面临着明显的挑战。

     

Electrode Native通过提供开源平台来应对这些挑战,该平台减少了React Native开发人员和移动应用程序开发人员的摩擦。使用Electrode Native平台解决方案,开发人员可以利用他们的知识,而无需大幅改变他们的工作流程,以适应移动应用程序中多个React Native组件的集成

     

Electrode Native允许移动应用程序开发人员轻松地将各个React Native组件集成到他们现有的移动应用程序中 - 无需更改其基础架构或处理或安装任何基于JavaScript的工具 - 甚至不是Electrode Native本身!

     

底线:使用Electrode Native,开发人员可以专注于功能和构建他们的应用程序 - 无需重用或集成问题的麻烦。

在此处详细了解Why electrode native