React Navigation 5.x 使用


简介

React Navigation 主要用于导航(StackNavigator),底部Tab导航(bottom-tabs),抽屉导航(drawer)

安装依赖

 // 安装react-navigation
yarn add @react-navigation/native
// 安装依赖库
yarn add react-native-gesture-handler react-native-reanimated react-native-screens react-native-safe-area-context @react-native-community/masked-view

安装导航库

   //StackNavigator
   npm install @react-navigation/stack
   //TabNavigator
   npm install @react-navigation/bottom-tabs
   //DrawerNavigator
   npm install @react-navigation/drawer

StackNavigator 使用

引入组件

import { NavigationContainer } from '@react-navigation/native';
import { createStackNavigator } from '@react-navigation/stack';

创建stack

    const Stack = createStackNavigator();
    
       
      
      
       
      
    

属性介绍

  • name:Screen名称 导航用
  • component:页面组件

导航

主要方法

  • navigate('component'):函数大致意味着“转到这个屏幕”,如果你已经在那个屏幕上,则不会跳转
  • push('component'): 和navigate不同之处在于始终会跳转到新的Screen,不能用它来回退到之前的Screen
  • goBack():回到上一个界面
  • popToTop():回到顶部
    ps: navigate()可以直接返回到当前栈中的任何一个Screen
export default class HomeScreen extends Component {
  constructor(props) {
    super(props);
  }
  render() {
    return (
      
         this.props.navigation.navigate('Login',{name:"jack"})}>
          跳转登陆    
        
 
      
    )
  }
}

传递参数
navigate('component',参数对象)和push()方法可以传入第二个参数

navigation.navigate('Login',{name:"jack"})}

获取参数
通过route.params获取传递的参数

this.props.route.params.name

初始参数

      

TopBar样式

通过设置options定义样式,options可以是一个对象也可以是一个方法.

  const ops = {
    title:"标题",//标题
    headerStyle:{ //整个头部样式
      backgroundColor:'red'
    },
    headerTintColor:'blue',//标题和返回键颜色
    headerTitleStyle:{//标题样式
        fontSize:32,
        color:'black'
    },
    headerTitle: props => //自定义头部标题组件
  }
  function LogoTitle(){
    return (  
      
    )
  } 

如果需要统一样式则设置screenOptions


动态设置options属性

 this.props.navigation.setOptions({
       title: this.props.route.params.name
  })

通过route传递参数给options,

  const s = ({route})=>{return {title:route.params.name} } 
//options 为一个方法
  

设置TopBar左右两边的视图

  • headerRight 设置顶部右边视图,headerLeft设置左边视图会覆盖掉返回按钮
  • headerBackTitle,headerTruncatedBackTitle 设置返回文本
  • headerBackImage 返回按钮图片
 const ops = {
    //....
    headerRight: () => ,//headerLeft
    
    //headerBackTitle:"返回",//
    //headerTruncatedBackTitle:"返回",
   // headerBackImage
  }
  function RightButton() {
    return (
      
        
        
      
    )
  }

全屏导航

设置Navigator的mode属性为'modal',全屏导航在IOS中从底部弹出,这里将正常导航以新的组件形式添加,则不会影响之前的导航形式

      
      
        
        
      

HmoeStackScreen

  const Stack = createStackNavigator();
  return(
    
      
      
        
         
        }} />
    
  )

相关