react navigation中使用goBack返回指定页面

goBack

首先, 现在看一下react navigation官网中对goBack的描述:
这里写图片描述

goBack的参数为页面的key, 这个key是系统随机分配的, 而不是手动设置的routeName, 所以参数填routeName无法跳转, goBack如果不带参数(即key为undefined)会返回上一个页面, 这个参数key不是目标页面的key, 而是可以在key为undefined时goBack到目标页面的那个页面的key. 如果key为null, 那么会回到任何地方.

可以结合下面链接中的Answer理解:
https://stackoverflow.com/questions/45489343/react-navigation-back-and-goback-not-working

如果有 A -> B -> C -> D 四个页面,
如果想从D回到B, 在react navigation不集成Redux的情况下, 需要在C通过this.props.navigation.state.key 拿到C的key, 然后把C的key传入到D中, 然后在D中执行this.props.navigation.goBack("C页面的key")就可回到B页面.

显然这样不太方便, 所以最好将Redux集成到react navigation中(react navigaiton官网中有集成方法,在这我就不赘述了).
集成了redux后, 可以在connect中拿到所有加载过的页面的route, 如:

class ResetPassword extends Component {
    ...
    render() {
        const { routes } = this.props;
        console.log(routes);
        return (
            ...
        )
    }
}

export default connect (
    (state) => ({
        routes: state.nav.routes
    })
)(ResetPassword)

为什么不使用navigate返回?

使用navigate()方法返回页面会使StackNavigator的结构乱掉, 导致跳转到目标页面后, 对页面组件的重新渲染会出问题.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值