我试图在反应本机项目中实现react-native-navigation选项卡栏,虽然我一直收到错误:
'undefined不是一个对象(Evaluating RCCManager.setRootController)'.
我首先安装了react-native-navigation,然后是react-native-controllers,然后做了react-native链接(就像教程所说).
这是我的AppDelegate.m代码:
#import "AppDelegate.h"
#import "RCCManager.h"
#import <React/RCTBundleURLProvider.h>
#import <React/RCTRootView.h>
@implementation AppDelegate
- (BOOL)application:(UIApplication *)applicationdidFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
NSURL *jsCodeLocation;
jsCodeLocation = [[RCTBundleURLProvider sharedSettings]jsBundleURLForBundleRoot:@"index.ios" fallbackResource:nil];
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
self.window.backgroundColor = [UIColor whiteColor];
[[RCCManager sharedInstance] initBridgeWithBundleURL:jsCodeLocation];
return YES;
}
@end
Run Code Online (Sandbox Code Playgroud) 我的应用程序在调试模式下在模拟器上运行正常.当我尝试在设备上使用已签名的APK或在模拟器上以释放模式运行时使用:
react-native run-android --variant=release
Run Code Online (Sandbox Code Playgroud)
它只是一个空白的白色屏幕,不加载.
我正在使用React-Native-Navigation和React-Native-Firebase,这可能会也可能不会导致问题.
我看到的一个错误与我认为的Firebase有关:
W/GooglePlayServicesUtil:Google Play服务已过期.需要11717000但是发现10298470 11-20 11:24:04.624 16106-16106 /?W/FA:
这failed to send app launch当然看起来很不祥.
编辑:我不确定上面的错误实际上是在我的设备上运行发布版本时导致空白屏幕.此消息显示在模拟器中,但我的应用程序在模拟器上工作.在我的设备上,我看到Google Play服务的版本是11.7.46,我认为应该可以正常使用.
还有什么能让我的应用只在发布时成为空白屏幕吗?
编辑2:
我这次发现了另一个错误(我已经降级到了旧版本的react-native-firebase 2.2)
11-25 12:11:07.278 5281-5295/com.spectrum E/FirebaseCrash:无法加载崩溃报告com.google.android.gms.internal.mn:..com.google.android.gms.dynamite.DynamiteModule $ zzc :远程加载失败.没有发现本地回退.来自com.google.fire.firebase.crash.zzc.zzFi(未知来源)的com.google.android.gms.internal.ml.zzFk(未知来源),位于java.util.concurrent.FutureTask.run(FutureTask.java:237) )java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:588)at java.lang.Thread.run(Thread.java: 818)由以下原因引起:com.google.android.gms.dynamite.DynamiteModule $ zzc:远程加载失败.没有发现本地回退....
编辑3:
以下是来自的依赖项app.gradle:
dependencies {
compile fileTree(dir: "libs", include: ["*.jar"])
compile "com.android.support:appcompat-v7:25.0.1"
compile "com.facebook.react:react-native:+" // From node_modules
compile project(':react-native-navigation')
// RNFirebase required dependencies
compile(project(':react-native-firebase')) {
transitive = false
}
compile "com.google.firebase:firebase-core:11.0.4"
// RNFirebase optional dependencies
compile "com.google.firebase:firebase-crash:11.0.4"
compile …Run Code Online (Sandbox Code Playgroud) android firebase google-play-services react-native react-native-navigation
我试图Navigate.push从sideMenu 打电话,但没有任何反应.
Navigation.setRoot({
root: {
sideMenu: {
left: {
component: {
name: 'app.SideMenu',
},
children: [
{
stack: {
children: [
{
component: {
name: TERMS_SCREEN.id,
}
},
]
}
}
]
},
center: {
bottomTabs: {
id: 'BottomTabsId',
options: {
topbar: {
visible: true,
}
},
children: [
{
stack: {
id: 'Tabs',
children: [
{
Run Code Online (Sandbox Code Playgroud)
..而我正试图像这样在sideMenu中推出一个屏幕
console.log(this.props.componentId);
Navigation.push(this.props.componentId, {
component: {
name: 'app.Terms',
}
})
Run Code Online (Sandbox Code Playgroud)
我收到日志但没有任何反应.我很肯定我需要对我的布局做一些事情,但我没有在文档中看到示例或解释.
我试着理解如何在嵌套堆栈中重置我的代码
const AuthStack = createStackNavigator(
{
Welcome,
Login,
Register,
ConfirmationCode,
},
{
initialRouteName: 'Welcome',
headerMode: 'none',
lazy: true,
transitionConfig,
defaultNavigationOptions: {
gesturesEnabled: false,
},
}
)
const AppStack = createStackNavigator(
{
TabStack,
SearchResult,
BusinessDetail,
BusinessMap,
MakeAppointment,
TermsAndConditions
},
{
initialRouteName: 'TabStack',
headerMode: 'none',
lazy: true,
transitionConfig,
defaultNavigationOptions: {
gesturesEnabled: false,
},
}
)
let MainStack = createSwitchNavigator(
{
AuthLoading,
Auth: AuthStack,
App: AppStack,
},
{
initialRouteName: 'AuthLoading',
headerMode: 'none',
lazy: true,
defaultNavigationOptions: {
gesturesEnabled: false,
},
}
)
Run Code Online (Sandbox Code Playgroud)
TabStack
import …Run Code Online (Sandbox Code Playgroud) 如何同时切换选项卡和推屏?当按下按钮时,我想切换到另一个选项卡并按下一个新屏幕。可能吗?
class Example extends Component {
buttonHandler = () => {
this.props.navigator.switchToTab({
tabIndex: 0
});
this.props.navigator.push({ // actually this navigator's tabIndex is 0
screen: "dc.Examplecreen",
title: "Exampe",
passProps: {
lesson : this.props
}
});
}
}
Run Code Online (Sandbox Code Playgroud) 注意:请务必对我应该提及的内容进行评论以改进这个问题,而不是不赞成,我能够成功地为另一个项目设置带有 expo 的 React Navigation,并且很想在这个项目中启动和运行 RNN。
我正在为我的 React Native 应用程序设置 React Native Navigation,特别是使用 Xcode 的 iOS。
我已AppDelegate.m按照说明更改了文件:
#import "AppDelegate.h"
#import <React/RCTBundleURLProvider.h>
#import <React/RCTRootView.h>
#import <ReactNativeNavigation/ReactNativeNavigation.h>
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
NSURL *jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil];
[ReactNativeNavigation bootstrap:jsCodeLocation launchOptions:launchOptions];
return YES;
}
@end
Run Code Online (Sandbox Code Playgroud)
进行更改后,我收到两个 Xcode 错误:
'ReactNativeNavigation/ReactNativeNavigation.h' file not found
Use of undeclared identifier 'ReactNativeNavigation'
Run Code Online (Sandbox Code Playgroud)
我已确保遵循所有步骤,错误发生在React Native Navigation iOS 文档的第 3 步
我遵循了下面提到的两篇文章中的所有步骤
https://hackernoon.com/react-native-deep-linking-for-ios-and-android-d33abfba7ef3
https://medium.com/react-native-training/deep-linking-your-react-native-app-d87c39a1ad5e
将应用程序安装到我的手机上后,我尝试通过提供 peopleapp://people/1 格式的 URL 从浏览器打开该应用程序。浏览器不会打开应用程序,而是打开 Google 搜索来搜索上述内容。
我使用此应用程序通过使用我的应用程序链接(https://play.google.com/store/apps/details?id=com.manoj.dlt&hl=en_US)打开我的应用程序,它正在工作。
但是如何使用我的应用程序链接从浏览器或其他应用程序打开应用程序?
任何人都有想法,如何解决这个问题?
这是我的 AndroidManifest 总代码`
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-feature android:name="android.hardware.camera" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application
android:name=".MainApplication"
android:allowBackup="false"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme"
android:usesCleartextTraffic="true">
<activity
android:name=".MainActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
android:screenOrientation="portrait"
android:label="@string/app_name"
android:windowSoftInputMode="adjustResize"
android:launchMode="singleTask">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter android:label="filter_react_native">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" …Run Code Online (Sandbox Code Playgroud) 我正在使用 tabnavigator (createbottomBottomTabNavigator) 并需要使用 redux 进行包计数方面的帮助。
我刚刚开始使用 React Native,所以我还在学习中。
我正在尝试在我的应用程序中实现导航,除了一页之外几乎所有内容都工作正常。
在应用程序中,当用户注册时,他可以作为个人或组织注册,这将导致他根据他的选择进入不同的注册表格。
但是,当我选择任一选项时,应用程序都会崩溃,并且出现以下错误:
未捕获的错误:RangeError:超出最大调用堆栈大小,堆栈。
我在网上寻找答案,大多数时候是因为导航中有无限循环。但是,我在代码中没有看到任何可能存在循环的地方,我按照对其他页面所做的那样进行了操作,这再次运行良好。
这是App.js的代码
import React from 'react';
import { StyleSheet, Text, View, TouchableOpacity } from 'react-native';
import { NavigationContainer } from '@react-navigation/native';
import { createStackNavigator } from '@react-navigation/stack';
import { LinearGradient } from 'expo-linear-gradient';
import WelcomeToKarma from "./components/WelcomeToKarma.js";
import Login from "./components/Login.js";
import ForgotPass from "./components/ForgotPass.js";
import UserRegistration from "./components/UserRegistration.js";
import OpenEmail from "./components/OpenEmail.js";
function InitialScreen({ navigation }) {
return (
<View style={styles.container}>
<LinearGradient
style={{ alignItems: 'center', justifyContent: 'center', flex: 1, width: '100%' …Run Code Online (Sandbox Code Playgroud) 我创建了一个 drawerNavigator,现在我正在尝试向标题添加一个图标。问题是当我添加 HeaderButton 时出现此错误:
在导航选项中,我尝试同时使用 HeaderButton 和 CustomHeaderButton 但它不起作用,我似乎无法弄清楚问题所在。
这是我的代码:
HeaderButton.js
import React from "react";
import { HeaderButton } from "react-navigation-header-buttons";
import { Ionicons } from "@expo/vector-icons";
const CustomHeaderButton = (props) => {
return (
<HeaderButton
{...props}
IconComponent={Ionicons}
iconSize={23}
color="black"
/>
);
};
export default CustomHeaderButton;
Run Code Online (Sandbox Code Playgroud)
欢迎屏幕.js
import React from "react";
import { View, Text, StyleSheet, ImageBackground, Image } from "react-native";
import MainButton from "../components/MainButton";
import Colors from "../constants/Colors";
import { HeaderButtons, Item } from "react-navigation-header-buttons";
import HeaderButton from …Run Code Online (Sandbox Code Playgroud) react-native ×10
android ×2
ios ×2
javascript ×2
reactjs ×2
deep-linking ×1
expo ×1
firebase ×1
react-redux ×1
redux ×1