React-native之Navigator调用popToRoute无效解决方案

前端之家收集整理的这篇文章主要介绍了React-native之Navigator调用popToRoute无效解决方案前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

前言

在使用RN过程中, 经常会遇到如下场景, 当前在D页面, 栈里有A =》 B => C => D 四个页面, 我们往往需要返回之前的某个页面(B页面),并卸载 C,D两个页面,此时就需要用到官方定义的popToRouter方法,但是本人尝试了一下无效,

this@H_404_6@.props@H_404_6@.navigator@H_404_6@.popToRoute@H_404_6@({name@H_404_6@:'login'@H_404_6@@H_404_6@@H_404_6@@H_404_6@});

于是查找一番找个了一个方法

方法

const@H_404_6@ routes = this@H_404_6@.props.navigator.state.routeStack;
                        let@H_404_6@ destinationRoute = ''@H_404_6@;
                        for@H_404_6@ (let@H_404_6@ i = routes.length - 1@H_404_6@; i >= 0@H_404_6@; i--) {
                                if@H_404_6@(routes[i].name === 'LoginView'@H_404_6@){
                                        destinationRoute = this@H_404_6@.props.navigator.getCurrentRoutes()[i]
                                        return@H_404_6@;
                                }
                        }
                        this@H_404_6@.props.navigator.popToRoute(destinationRoute);

主要原理在于,找到栈中所有的页面调用getCurrentRoutes方法找到对应的路由,再次执行popToRoute即可。

猜你在找的React相关文章