React-native IT喵喵~路由之React Navigation

前端之家收集整理的这篇文章主要介绍了React-native IT喵喵~路由之React Navigation前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

大家自己 去看文档吧!!! 为了业务快把文档看完了。。。 不过给大家翻译了一点。。。

欢迎大家关注一下 基于React-naive开发的“IT喵~”项目。技能GET、互联网资讯、程序员相亲、GitHub监控。。。 Github地址:https://github.com/cbamls/kitty_front

效果

内置的Navigators

react-navigation 包含了下列三种函数赖创建navigators

  • StackNavigator 一次性渲染一个screen, 或者提供screen之间的转换, 当打开一个新的screen会被放到栈顶
  • TabNavigator 渲染一个tab bar 使得用户在screen之间切换
  • DrawerNavigator 提供了一种“抽屉”模型,用在滑入或退出screen中

使用Navigators渲染screen

navigators渲染的应用screen实质上是一个个的React组件
- Screen navigation prop 允许screen分发navigation事件,比如打开另一个screen
- ScreennavigationOptions 用来个性化Screen如何被navigator展现(使用header, title, tab label)

StackNavigator

  1. class MyHomeScreen extends React.Component {
  2. static navigationOptions = {
  3. title: 'Home',}
  4.  
  5. render() {
  6. return (
  7. <Button
  8. onPress={() => this.props.navigation.navigate('Profile',{name: 'Lucy'})}
  9. title="Go to Lucy's profile"
  10. />
  11. );
  12. }
  13. }
  14.  
  15. const ModalStack = StackNavigator({
  16. Home: {
  17. screen: MyHomeScreen,},Profile: {
  18. path: 'people/:name',screen: MyProfileScreen,});

API 定义

  1. StackNavigator(RouteConfigs,StackNavigatorConfig)

RouteConfigs

  1. StackNavigator({
  2.  
  3. Profile: {
  4.  
  5. //`ProfileScreen`是一个React component组件
  6. screen: ProfileScreen,// 当`ProfileScreen` 被 StackNavigator加载,他会被默认传递一个 `navigation` 属性.
  7.  
  8.  
  9. path: 'people/:name',// 传递action和路由参数
  10.  
  11. // Optional: 覆盖`ProfileScreen`的 `navigationOptions`
  12. navigationOptions: ({navigation}) => ({
  13. title: `${navigation.state.params.name}'s Profile'`,
  14. }),...MyOtherRoutes,});

StackNavigatorConfig

  • initialRouteName 设置默认screen
  • initialRouteParams 初始路由的默认参数
  • navigationOptions 对于所有Screen的默认路由选项
  • paths 覆盖 route configs中设置的path集

TabNavigator

  1. class MyHomeScreen extends React.Component {
  2. static navigationOptions = {
  3. tabBarLabel: 'Home',// Note: By default the icon is only shown on iOS. Search the showIcon option below.
  4. tabBarIcon: ({ tintColor }) => (
  5. <Image
  6. source={require('./chats-icon.png')}
  7. style={[styles.icon,{tintColor: tintColor}]}
  8. />
  9. ),};
  10.  
  11. render() {
  12. return (
  13. <Button
  14. onPress={() => this.props.navigation.navigate('Notifications')}
  15. title="Go to notifications"
  16. />
  17. );
  18. }
  19. }
  20.  
  21. class MyNotificationsScreen extends React.Component {
  22. static navigationOptions = {
  23. tabBarLabel: 'Notifications',tabBarIcon: ({ tintColor }) => (
  24. <Image
  25. source={require('./notif-icon.png')}
  26. style={[styles.icon,};
  27.  
  28. render() {
  29. return (
  30. <Button
  31. onPress={() => this.props.navigation.goBack()}
  32. title="Go back home"
  33. />
  34. );
  35. }
  36. }
  37.  
  38. const styles = StyleSheet.create({
  39. icon: {
  40. width: 26,height: 26,});
  41.  
  42. const MyApp = TabNavigator({
  43. Home: {
  44. screen: MyHomeScreen,Notifications: {
  45. screen: MyNotificationsScreen,{
  46. tabBarOptions: {
  47. activeTintColor: '#e91e63',});

猜你在找的React相关文章