文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

react navigation方法怎么用

2023-05-14 21:40

关注

react navigation方法怎么用

本教程操作环境:Windows10系统、react18.0.0版、Dell G3电脑。

react navigation方法怎么用?

react-navigation 常用方法

react-navigation是rn项目使用路由管理器;除了提供路由history管理,还有导航器的ui组件!;

react-navigation会在所有注册路由页面的props里面注入navigation!!!

1.创建主路由;

createStackNavigator

其中包括项目中所使用的基本所有的页面路由;

const Main = createStackNavigator({
    Tab: {
        screen: Tab,
        navigationOptions:{
            header:null
        }
    }
     。。。
},{
    initialRouteName :'Tab',   
})

2.创建底部标签栏;

createBottomTabNavigator

即app首页底部的几个tab分页

const Tab = createBottomTabNavigator({
    Home: {
        screen: Home,
        navigationOptions:{
            header:null,
            title:'最热',
            tabBarIcon:({focused,tintColor})=>{
                return (
                    <MCIcon name="chili-hot"  size={16} color = {focused?tintColor:'#404040'}></MCIcon>
                )
            }    
        }
    },
   。。。
},{
    initialRouteName :'Home',
    tabBarOptions:{
        activeTintColor:'#1d85d0' 
    }
})

3.创建特殊switch路由; 跳转之前的页面将不会进入history堆栈;

createSwitchNavigator
//欢迎页跳转不可返回
const Navigation = createSwitchNavigator({
    Init:Init,
    Main:Main
},{
    initialRouteName :'Init'
})

4.创建顶部tab页标签,会占用导航栏位置

createMaterialTopTabNavigator
export default class Home extends Component {
  render() {
    const TabNav = createMaterialTopTabNavigator({
      Tab1:{
        screen: Tab1,
        navigationOptions:{
            title:'tab1',
            header:null
        }
      }
。。。
   
    },{。。。}) 
    return (
      <TabNav/>
    ) 
  }
}

5.navigationOptions常用的配置属性

headerTtile: 页面

headerTitleStyle: 文字的样式

headerStyle:整块的样式

6.tab部分的参考属性

tabBarOptions - 具有以下属性的对象:
activeTintColor -活动选项卡的标签和图标颜色。
activeBackgroundColor -活动选项卡的背景色。
inactiveTintColor -"非活动" 选项卡的标签和图标颜色。
inactiveBackgroundColor -非活动选项卡的背景色。
showLabel -是否显示选项卡的标签, 默认值为 true。
showIcon - 是否显示 Tab 的图标,默认为false。
style -选项卡栏的样式对象。
labelStyle -选项卡标签的样式对象。
tabStyle -选项卡的样式对象。
allowFontScaling -无论标签字体是否应缩放以尊重文字大小可访问性设置,默认值都是 true。
safeAreaInset - 为 <SafeAreaView> 组件重写 forceInset prop, 默认值:{ bottom: 'always', top: 'never' }; top | bottom | left | right 的可选值有: 'always' | 'never'。

BottomTabBar组件也可以草考这个属性

7.制作返回功能

通常我们在需要返回的页面上使用 this.props.navigation 获取到navigation 的props对象;

可以使用

this.props.navigation.goBack()

来返回页面;但是这样做的前提是 this.props.navgation必须是当前页面的navigation;即可以查看 this.props.navigation.state.routeName 来判断:

某些特殊的情况下,比如安卓返回键的返回判断有可能返回事件不是在该页面捕获,因为回退事件BackHandler是会向上传递的; 那么this.props.navigation可能就不是需要回退的压面的navigation对象了;所以已使用go.Back()是不会成功的;或者有些情况下naviagtion对象不一定有goBack()方法 也会造成这个问题;

例如;

home页面是一级路由,detail页面是二级路由,两个页面都设置了BackHandler的回调函数;若detai里面的BackHandler没有被当前页面捕获的话就会传递给home里面的BackHandler回调函数;那么在home里的 this.props.navigation就是指的home页面的,而不是detail,所以调用goBack也不会成功!!!

解决方法:

使用NavigationActions ;

所有NavigationActions返回可以使用navigation.dispatch()方法发送到路由器的对象。

支持以下操作:

Navigate - 导航到另一条路由

Back - 回到之前的状态

Set Params - 设置给定路由的参数

Init - 用于在状态未定义时初始化第一个状态

具体看文档:https://reactnavigation.org/docs/zh-Hans/navigation-actions.html

通过:

dispatch(NavigationActions.back());

就可以实行返回操作了;

注意:

dispatch()方法是在 this.props.navigation里面的

以上就是react navigation方法怎么用的详细内容,更多请关注编程网其它相关文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-前端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯