轮播切换图片显示白屏(react-native-swiper|react-native-snap-carousel)

发现在使用react-native-snap-carousel或者react-native-swiper时都会出现切换白屏的情况
如图:


轮播切换图片显示白屏(react-native-swiper|react-native-snap-carousel)_第1张图片
whiteScreen.gif

思路:
这是因为在切换tab是正好执行图片切换,导致图片渲染不出来。
我的想法是监听tab的监听事件,在切换前禁止轮播的循环,再次回到此页面时,重新开始循环,这样就不会出现白屏现象。
步骤:
1:首先在tab时监听点击事件,因为我是自己自定义的tab,所以可以很容易的获取监听。

 {
                    DeviceEventEmitter.emit('TabChange', index);//这里在跳转前发送一个消息 然后在轮播页监听事件
                    jumpToIndex(index);
                }}
                style={{width:WIDTH/count,flexDirection:'row', justifyContent:'space-around',}}
                activeOpacity={1}
            >
                
                    
                    {this.props.renderIcon(TabScene)}
                    
                    {this.props.getLabel(TabScene)}
                    
                
            

关于自定义react-navigation 的Tab请参考
https://github.com/wuyunqiang/ReactNativeUtil/issues/9
2:轮播页代码:
添加监听事件

 componentDidMount() {
        this.listentab = DeviceEventEmitter.addListener('TabChange',this.ListenTab);

    }

监听函数:

 ListenTab = (data)=>{
        if(data!=0){
            this.setState({
                loop:false,
                autoplay:false,
            })
        }else{
            this.setState({
                change:true,
                loop:true,
                autoplay:true,
            })
        }
    };
 renderBanner = () => {
        return (
            
                
                {this.renderEntrance()}
                
            
        )
    };

这样在切换时就不会显示白屏了。

你可能感兴趣的:(轮播切换图片显示白屏(react-native-swiper|react-native-snap-carousel))