React-Native-Navigator导航条-push不同动画

在configureScene里面设置的一个push动画效果http://www.jianshu.com/p/2daf0727b18a

 configureScene(route) {

        return Navigator.SceneConfigs.PushFromRight

    }

如果第一个页面push到第二个页面,采用PushFromRight动画
但是第二个push到第三个页面采用FloatFromRight动画
这该如何是好呢

don't worry

I can help 你

不要忘了上面有一个route属性

我们就利用route.type属性进行判断动画类型
当然还有一个route.name属性,具体想怎么样自己看着办吧

有这个需求了,所以每次push我们要传递一个参数,说明要采用哪种动画效果了
所以调用push方法时要加上一个参数

//type就是我们新加的参数
//每次push调用时 
//configureScene(route) {return Navigator.SceneConfigs.PushFromRight}这个方法都会执行
 goPage2(type) {
        this.props.navigator.push({
            component:SecondPageComponent,
            type:type,//注意这个赋值,
name:'name',//也可以使用name,想怎么样自己看着办
            params:{//params 要和HomePage.js里面的 renderScene(route, navigator)里面设置的参数名一样
                param1:'第一个参数',
                param2:'第二个参数',
            }
        })
    }
//所以我们根据route.type来判断调用push时传的参数
//根据不同的参数实现不同的动画效果
configureScene(route) {

        //其他页面点击按钮跳转方法传入参数,在这里通过route.type可以接收到,对参数进行动画的判断
        console.log('route.type is ='+route.type);
        console.log('route.name is ='+route.name);

        if (route.type == 'normal'){
            return Navigator.SceneConfigs.PushFromRight
        }
        return Navigator.SceneConfigs.FloatFromRight

        //直接用同一个动画跳转
        //return Navigator.SceneConfigs.FloatFromRight

    }

所以,当我们调用push方法时,就需要传参数了

 render() {
        return (
            <View style={firstPageStyle.viewStyleBase}>

                <TouchableOpacity style={firstPageStyle.opacityStyleBase} onPress={() => this.goPage2('normal')}>
                    <Text style={firstPageStyle.textStyleBase}>第一页</Text>
                </TouchableOpacity>

                <Text style={{backgroundColor:'yellow'}}>从第二个页面传过来的值:{this.state.paramData}</Text>
            </View>
        )

    }

项目地址:https://github.com/chjwrr/RN-NatigatorTest

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值