一、 stack路由结构的一些效果

(1)横向过渡动画

(2)整个选项卡样式修饰

最终实现效果:动态图

以上两个功能实现都很简单,我测试时,关注了一个问题,navigation 丢失。stackNavigator除了直接组件会自动拥有navigation属性,其余的都没有,那么解决的办法就是使用withNavigation导出要使用navigation的组件。该属性具体的包在

import {withNavigation} from '@react-navigation/compat'

具体解释:https://reactnavigation.org/docs/compatibility/

功能3:准确叫出每个部位的专业名字(不然每次搜索都不知道叫啥,悲催)

我将 https://reactnavigation.org/docs/stack-navigator 对导航栏、后退按钮、屏幕标题的处理总结在下面代码中

<Stack.Screen name="Chat" component={Chat} options={{
//1.导航栏的设置
headerMode: 'screen',
headerShown: true, //导航栏是否显示
headerStyle:{ //导航栏的样式
shadowOffset: {width: 0, height: 0},
shadowColor: '#1a505050',
shadowRadius: 2, //阴影模糊半径
shadowOpacity: 1, // 阴影不透明度
elevation: 1, //让安卓拥有灰色阴影 --- 必须
},

//2. 设置导航标题的“名字”和“位置”(同时给多个屏幕设置标题?)
headerTitle: "聊天",
headerTitleAlign:'center',

//3. 在headerLeft中可以完全覆盖,后退按钮,也可以使用headerBackImage
headerLeft:()=><Image style={{width:9,height:16,marginHorizontal:25}} source={require('./img/return_icon.png')}/>
}} />

功能4:stack路由切换时,横向过渡动画

import {TransitionPresets} from '@react-navigation/stack';

<NavigationContainer>
<Stack.Navigator
screenOptions={{
//这三个点是,解构赋值Es6的新写法
...TransitionPresets.SlideFromRightIOS
}}
>
<Stack.Screen name="Login" component={Login} options={{headerShown:false}}/>
<Stack.Screen name="TabCollection" component={TabCollection} />
<Stack.Screen name="Chat" component={Chat}/>
</Stack.Navigator>
</NavigationContainer>

具体看官网解释: https://reactnavigation.org/docs/stack-navigator/#transitionpresets

二、createMaterialTopTabNavigator导航的样式修饰(方便下次直接使用)

1. indicator指示器设置固定宽度,居中

2. 修改选项卡底部样式

效果图如下

import React,{Component} from 'react';
import {View,Text,StyleSheet} from 'react-native';
import { NavigationContainer } from '@react-navigation/native'; //这个只有首页需要
import { createMaterialTopTabNavigator } from '@react-navigation/material-top-tabs';
// 谁看过我
class HomeScreen extends React.Component{
render(){
return (
<View style={styles.box}>
<Text>A看过我</Text>
<Text>B看过我</Text>
</View>
)
}
}
// 我看过谁
class SettingsScreen extends React.Component{
render(){
return (
<View style={styles.box}>
<Text>我看过 《斗罗大陆》</Text>
<Text>我看过 《狐妖小红娘》</Text>
</View>
)
}
} // 构建tab路由
let MyTab = createMaterialTopTabNavigator(); function App() {
return (
<NavigationContainer>
<MyTab.Navigator
tabBarOptions={{
activeTintColor: "#345484", //选中状态标签颜色
inactiveTintColor: "#232325",//未选中状态标签颜色
labelStyle:{ //标签文字大小
fontSize: 16
},
indicatorStyle:{//底部指示器样式对象,设置固定宽度居中
width:32,
left:"25%",
marginLeft: -16,
height: 2,
backgroundColor:"#345484",
},
style:{
shadowOffset: {width: 0, height: 0},
shadowColor: '#1a505050',
shadowRadius: 2, //阴影模糊半径
shadowOpacity: 1, // 阴影不透明度
elevation: 1,
}
}}
>
<MyTab.Screen name="Home" options={{title:"谁看过我"}} component={HomeScreen} />
<MyTab.Screen name="Settings" options={{title:"我看过谁"}} component={SettingsScreen} />
</MyTab.Navigator>
</NavigationContainer>
);
}
let styles = StyleSheet.create({
box:{
flex:1,backgroundColor:'#fff',justifyContent:'center',alignItems:'center'
}
}); export default App;

这里还有一些关于react-navigation 5.x我所遇到的问题

https://www.cnblogs.com/tengyuxin/p/13394646.html

React-Navigation 5.x 的 demo案例的更多相关文章

  1. react-native 学习 ----- React Navigation

    很久没有的登陆博客园了,密码都是找回的,从当年的大学生已经正常的走上了程序员的道路,看到之前发的博客还是写的android,现在自己已经在使用了react-native了. 大学毕业了,做了java后 ...

  2. react-native导航器 react navigation 介绍

    开发环境搭建好之后,想要进一步了解react-native,可以先从react-native官网上的电影列表案例入手: https://reactnative.cn/docs/0.51/sample- ...

  3. React Native常用组件之TabBarIOS、TabBarIOS.Item组件、Navigator组件、NavigatorIOS组件、React Navigation第三方

    以下内容为老版本React Native,faceBook已经有了新的导航组件,请移步其他博客参考>>[我是传送门] 参考资料:React Navigation  react-native ...

  4. React Navigation & React Native & React Native Navigation

    React Navigation & React Native & React Native Navigation React Navigation https://facebook. ...

  5. [RN] 04 - React Navigation

    react-navigation和react-router的对比: 支持的平台: react-navigation: react-native react-router: react-native.r ...

  6. React-native 导航插件React Navigation 4.x的使用

    React-native 导航插件React Navigation 4.x的使用 文档 英文水平可以的话,建议直接阅读英文文档 简单使用介绍 安装插件 yarn add react-navigatio ...

  7. [RN] React Navigation 使用中遇到的显示 问题 汇总

    React Navigation 使用中遇到的显示 问题 汇总 https://www.jianshu.com/p/8b1f18affc5d

  8. react navigation goBack()返回到任意页面(不集成redux) 一

    方案一: 一.适用场景:在app端开发的时候,相反回到某一个页面的时候保持跳转页面的所有状态不更新,也就是说不触发新的生命周期. 例如:A——>B——>C——>D 要想从D页面直接返 ...

  9. React Navigation / React Native Navigation 多种类型的导航结合使用,构造合理回退栈

    React Navigation 更新到版本5已经是非常完善的一套导航管理组件, 提供了Stack , Tab , Drawer 导航方式 , 那么我们应该怎样设计和组合应用他们来构建一个完美的回退栈 ...

  10. Facebook力推导航库:React Navigation使用详解

    本文来自Songlcy投稿:文章地址:http://blog.csdn.net/u013718120/article/details/72357698 一.开源库介绍 今年1月份,新开源的react- ...

随机推荐

  1. Linux之ssh远程连接

    Linux之ssh远程连接 一.下载远程连接工具Xshell Xshell是一种远程连接工具,可用来远程连接虚拟机. Xshell免费版下载地址 输入名字和邮箱,可以在邮箱看到下载Xshell的链接. ...

  2. 了解 Transformers 是如何“思考”的

    Transformer 模型是 AI 系统的基础.已经有了数不清的关于 "Transformer 如何工作" 的核心结构图表. 但是这些图表没有提供任何直观的计算该模型的框架表示. ...

  3. 《Terraform 101 从入门到实践》 第一章 Terraform初相识

    <Terraform 101 从入门到实践>这本小册在南瓜慢说官方网站和GitHub两个地方同步更新,书中的示例代码也是放在GitHub上,方便大家参考查看. 初闻不知Terraform, ...

  4. rt-thread模糊到清晰系列: irq.c

    #include <rthw.h> #include <rtthread.h> // 进入离开中断的钩子函数 #ifdef RT_USING_HOOK static void ...

  5. C++练习8 常量的说明

    const用来声明常量,const的位置可以看出其修饰的是哪一部分 1 #include <iostream> 2 using namespace std; 3 int main() 4 ...

  6. 配置文件、RDB、Jedis

    配置文件 # Note on units: when memory size is needed, it is possible to specify # it in the usual form o ...

  7. 微信小程序wx.navigateTo跳转参数大小超出限制问题

    微信小程序的跳转方式 wx.navigateTo(Object):保留当前页面,跳转到应用内的某个页面,使用 wx.navigateBack 可以返回到原页(新页面入栈) wx.redirectTo( ...

  8. 阅读openfoam框图

    看完of的帮助文档,会非常怀念fluent的帮助文档或是matlab的帮助文档 比如我要解决一个matlab问题,基本上看帮助文档一分钟就知道我要如何取用我想要的东西,of帮助文档不光做不到,还给你炫 ...

  9. Cesium entity画各种图(十六)

    在官方示例的沙盒里写东西是真方便 Cesium中有两种对象可以添加到场景中,Entity.Primitive.Entity对用户更友好,方便使用,但是灵活性和性能差一些.Primitive,支持自定义 ...

  10. Git常用指令集合🔥

    关联文章:Git入门图文教程(1.5W字40图)--深入浅出.图文并茂 指令-查看状态信息 指令 描述 git --version 查看git版本 git status 查看本地仓库状态,比较常用的指 ...