【发布时间】:2018-02-26 14:56:39
【问题描述】:
我是 react native 的初学者,所以也许我的问题对所有专家来说都是愚蠢的。
但我正在努力实现一个我想要实现的基本功能,我想用启动屏幕启动我的应用程序,几秒钟后我想显示登录屏幕或主屏幕。
我检查了一些示例,但没有找到任何包含完整代码的示例,因此不知道如何在我的应用中使用这些代码 sn-ps。
我已尝试根据文档应用一些代码,但我的代码出错,请查看并帮助我。
下面是我的代码:
Index.android.js
/** * 示例 React Native 应用程序 * https://github.com/facebook/react-native * @流动 */ 从'react'导入反应,{组件}; 进口 { 应用注册, 样式表, 文本, 看法, 航海家 } 来自 'react-native'; 从'./Splash'导入Splash; 从'./Login'导入登录; 导出默认类 DigitalReceipt 扩展组件 { 使成为() { 返回 ( { if (route.sceneConfig) { 返回 route.sceneConfig; } 返回 Navigator.SceneConfigs.FloatFromRight; }} /> ); } 渲染场景(路线,导航器){ var routeId = route.id; if (routeId === 'Splash') { 返回 ( ); } if (routeId === '登录') { 返回 ( ); } 返回 this.noRoute(navigator); } } 常量样式 = StyleSheet.create({ 容器: { 弹性:1, justifyContent: '中心', alignItems:'中心', 背景颜色:'#F5FCFF', }, 欢迎: { 字体大小:20, textAlign: '居中', 边距:10, }, 指示: { textAlign: '居中', 颜色:'#333333', 边距底部:5, }, }); AppRegistry.registerComponent('DigitalReceipt', () => DigitalReceipt);Splash.js
从'react'导入反应,{组件}; 进口 { 应用注册, 看法, 文本, 样式表, 图片 } 来自 'react-native'; 从“反应导航”导入 { StackNavigator }; 从'./Login'导入登录; 类飞溅扩展组件{ 组件WillMount() { var navigator = this.props.navigator; 设置超时(()=> { 导航('登录') }, 1000); } 使成为(){ 常量 { 导航 } = this.props.navigation; 返回 ( 数字收据 由 React Native 提供支持 ); } } 常量 SplashApp = StackNavigator({ 登录:{屏幕:登录}, 飞溅:{屏幕:飞溅}, }); 常量样式 = StyleSheet.create({ 包装:{ 背景颜色:'#FFFFFF', 弹性:1, justifyContent: '中心', alignItems:'中心' }, 标题: { 颜色:'#2ea9d3', 字体大小:32, 字体重量:'粗体' }, 字幕:{ 颜色:'#2ea9d3', 字体重量:'200', paddingBottom: 20 }, 标题包装器:{ 弹性:1, justifyContent: '中心', alignItems:'中心' }, 商标:{ 宽度:96, 身高:96 } }); AppRegistry.registerComponent('SplashApp', () => SplashApp);Login.js
从'react'导入反应,{组件}; 进口 { 应用注册, 看法, 文本, 样式表, 图片 } 来自 'react-native'; 从“反应导航”导入 { StackNavigator }; 从'./Splash'导入Splash; 类登录扩展组件{ 静态导航选项 = { 标题:“欢迎”, }; 使成为(){ 常量 { 导航 } = this.props.navigation; 返回 ( 登录屏幕 ); } } const LoginApp = StackNavigator({ 登录:{屏幕:登录}, 飞溅:{屏幕:飞溅}, }); 常量样式 = StyleSheet.create({ 包装:{ 背景颜色:'#FFFFFF', 弹性:1, justifyContent: '中心', alignItems:'中心' }, 标题: { 颜色:'#2ea9d3', 字体大小:32, 字体重量:'粗体' } }); AppRegistry.registerComponent('LoginApp', () => LoginApp);请帮助我,如果您发现任何代码中的愚蠢错误,请见谅。
谢谢
【问题讨论】:
-
您不需要每次都在 stacknavigator 中声明屏幕,并且您甚至在创建它之前就访问了启动路径。不注册登录界面,默认导出即可。您正在混合导航器和堆栈导航器,两者都是不同的
-
您好,感谢您的回复。你能告诉我我需要在哪里声明屏幕,以及我应该使用什么来满足我的要求、导航器或堆栈导航器吗?
-
Stack navigator 非常好用且易于使用。首先制作您的应用程序的流程,然后逐步进行。首先创建一个只有堆栈导航器屏幕声明的文件。将第一条路线作为启动。基于登录的启动后,您可以转到登录或主屏幕
-
感谢您的指导,让我尝试一下并实现它
-
只需添加 module.exports = SplashScreen;在启动画面类的底部。
标签: react-native react-navigation splash-screen