开发者社区> 问答> 正文

为什么有时候路由切换行为不一致啊?

已解决

为什么有时候组件后退、切换、跳转表现行为不一致?生命周期事件执行不一致呢?

展开
收起
游客dndzx3dbvf2jq 2022-09-16 21:29:40 1552 0
1 条回答
写回答
取消 提交回答
  • 推荐回答

    navigation中有三种行为不同的导航器:栈导航器、标签导航器、Switch导航器。

    1、栈导航器

    堆栈导航器主要是createStackNavigator创建,它的路由是按照栈数据结构存放的。当前屏幕显示的永远是栈顶的screen组件。跳转行为是:栈中不存在就push到栈顶,执行componentDidMount。栈中存在就直接跳转,并且跳转到的组件到栈顶之间的screen组件和导航状态会全部卸载,依次执行componentWillUnMount事件,卸载顺序是冒泡执行,直到栈顶的组件。

    2、标签导航器

    标签导航器由createBottomTabNavigator/createMaterialBottomTabNavigator/createMaterialTopTabNavigator创建。导航状态存放方式和对象一样,不是按照顺序存放的。第一次跳转会执行componentDidMount,以后跳转不会卸载当前组件,不执行生命周期。

    3、Switch导航器

    Switch导航器是createSwitchNavigator创建。createSwitchNavigator的跳转是先卸载当前所有导航,然后加载跳转的导航组件screen。一次只显示一个屏幕。切换就先卸载当前的组件,再加载要切换到的组件。每次只显示一个组件。

    2022-09-16 22:24:21
    赞同 展开评论 打赏
来源圈子
更多
收录在圈子:
+ 订阅
技术图谱:由专家组参与技术图谱的绘制与编写,知识与实践的结合让开发者们掌握学习路线与逻辑,快速提升技能 电子书:电子书由阿里内外专家打造,供开发者们下载学习,更与课程相结合,使用户更易理解掌握课程内容 训练营:学习训练营 深入浅出,专家授课,带领开发者们快速上云 精品课程:汇集知识碎片,解决技术难题,体系化学习场景,深入浅出,易于理解 技能自测:提供免费测试,摸底自查 体验实验室:学完即练,云资源免费使用
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载