适用于 iOS 和 Android 的 React Native Router

Posted

技术标签:

【中文标题】适用于 iOS 和 Android 的 React Native Router【英文标题】:React Native Router for iOS and Android 【发布时间】:2016-01-04 18:13:22 【问题描述】:

我正在为 androidios 编写一个应用程序。我是 javascript/React native 等的真正菜鸟,我希望我的问题不是菜鸟...

我尝试在主视图上实现一个带有两个按钮的 LoginPage 和一个用于链接我的信息的 StatusBar 图标,例如,一个 Impressum 页面/视图。这适用于 iOS 上的 react-native-router 模块。我的 index.ios.js 看起来像这样:

class MyApp extends React.Component 

render() 
    return (
        <Router firstRoute=firstRoute
                headerStyle=styles.statusBar
                titleStyle=styles.title
                backButtonComponent=BackButtonIcon
                rightCorner=ImpressumIcon
        />
    );

ImpressumIcon.js 用于链接到 ImpressumPage 的图标

var ImpressumIcon = React.createClass(

goToImpressumPage: function () 
    this.props.toRoute(
        name: 'Impressum',
        component: ImpressumPage,
    );
,

render() 
    return (
        <TouchableHighlight underlayColor="transparent" onPress=this.goToImpressumPage>
            <Image source=require('image!infoicon') style=styles.icon/>
        </TouchableHighlight>
    )


)

如前所述,这对 iOS 非常有用。现在尝试做同样的事情会给我一个例外 - null 不是对象(评估'StatusBarIOS.setStyle')

现在我追踪了错误,它把我带到了库 - node_modules-libraries-Components-StatusBar - 这里有两个类。 StatusBarIOS.ios.js 和 StatusBarIOS.android.js。 android只返回null。所以现在我想弄清楚下一步该做什么。 我应该尝试自己实现绑定还是有更简单的方法来解决我的问题?也许有人暗示我下一步该做什么。

我在 React Native API 中看到了 Navigator 组件,但不幸的是这给了我同样的错误...

【问题讨论】:

【参考方案1】:

我实现了一个使用 WebView 登录到现有后端的 React Native Login 示例。检查一下,看看它是否能解决您的问题:https://github.com/ryanmcdermott/react-native-login

【讨论】:

【参考方案2】:

这是因为 react-native-router 组件 - 最好的解决方案是从 /node_modules/react-native-router/index.js 文件中删除所有相关的代码行

【讨论】:

以上是关于适用于 iOS 和 Android 的 React Native Router的主要内容,如果未能解决你的问题,请参考以下文章

适用于 Android 和 iOS 的 React Native 中的警报功能

适用于 Android 和 iOS 的不同软件包版本

在使用适用于 iOS 和 Android 的 React Native 时,我还能使用原生第三方库吗?

使用 lottie-react-native (2.6.1) 时,React native expo 应用程序在 android 上崩溃,但适用于 ios

我们可以在跨平台中使用 android/ios sdk,例如 react native/flutter/ionic

iOS 模拟器上的 stripe.createPaymentMethod() 错误,但适用于 Android 模拟器