我们使用React Navigation为Android和iOS构建一个简单的聊天应用程序。
设置与安装
首先,确保您都设置好了React Native的环境。接下来,创建一个新项目并添加 react-navigation:
1 | # 创建一个RN应用 |
验证您是否可以成功查看在iOS或Android设备上运行的示例应用程序:
Android
IOS
我们想在IOS和Android设备上分享同一套代码,所以,我们应该删除 index.ios.js 和 index.android.js 文件中的代码内容,同时,使用 import './App'; 进行替换。
现在可以为我们的应用程序实现创建新文件, App.js 。
介绍栈导航( Stack Navigator)
对于我们的应用程序,我们想使用StackNavigator,因为我们需要一个概念上的“堆栈”导航,每个新屏幕都放在堆栈的顶部,并返回从堆栈顶部移除一个屏幕。我们从一个屏幕开始:
1 | import React from 'react'; |
屏幕的标题 title 可以在静态navigationOptions上进行配置,其中可以设置许多选项来配置导航器中的屏幕显示。
现在iPhone和Android应用都会出现相同的屏幕:
Android
IOS
添加一个新屏幕
在我们的 App.js 文件中, 添加一个叫 ChatScreen 新屏幕:
1 | class ChatScreen extends React.Component { |
然后,我们在 HomeScreen 组件中添加一个按钮,并使用路由(routeName)Chat 链接到ChatScreen 组件上。
1 | class HomeScreen extends React.Component { |
我们正在使用屏幕导航属性( screen navigation prop )中的导航功能跳转到ChatScreen 组件上。然后,我们将它添加到我们的栈导航组件StackNavigator中。
1 | const SimpleApp = StackNavigator({ |
现在,你可以导航到你新创建的ChatScreen组件上,然后返回上一个HomeScreen组件。
Android
IOS
传递参数
将名称硬编码到ChatScreen中并不理想。如果我们可以动态地传递一个名称来代替,那将会更有用,所以让我们这样做。
除了在导航功能中指定目标组件routeName之外,还可以传递将放入新路由的参数。首先,我们将编辑我们的HomeScreen组件,将 user 参数传递到路由中。
1 | class HomeScreen extends React.Component { |
然后,我们可以编辑我们的ChatScreen组件,以显示通过路由传递的用户参数:
1 | class ChatScreen extends React.Component { |
现在,当您导航到聊天屏幕时能看到动态专递过来的名字。尝试在HomeScreen中更改用户参数,看看会发生什么!
Android
IOS





