美文网首页
RN性能优化之Navigator卡顿优化

RN性能优化之Navigator卡顿优化

作者: 哪吒闹海全靠浪 | 来源:发表于2017-06-10 22:12 被阅读0次

前言

目前RN的导航有Navigator和NavigatorIOS两种。
主要的区别在于NavigatorIOS使用了iOS中的UINavigationController类,是原生的,而Navigator则完全用js重写了一个类似功能的React组件,是js的。因此Navigator的性能不是很好,但可以兼容iOS和Android,而NavigatorIOS的性能比Navigator好很多,但只能用于iOS。
需要两个平台都能用,而且统一,只能用Navigator,同时我们就也要解决它带来的卡顿的问题。

解决方法

  • 使用InteractionManager在转场动画的过程中,使新页面只渲染必要的少量的内容。
  • 使用InteractionManager.runAfterInteractions,在回调函数里再写复杂的逻辑、请求(InteractionManager.runAfterInteractions的参数中包含一个回调,这个回调会在navigator切换动画结束的时候被触发,每个来自于Animated接口的动画都会通知InteractionManager)。

具体的代码片段如下:

constructor(props){
        super(props);
        this.state = {
            didMount: false
        };
}
render(){
        const rowData = this.props.rowData;
        return(
            <View style={[styles.container, {backgroundColor: this.props.pageBackgroundColor}]}>
                <View style={styles.contentContainer} {...this._panResponder.panHandlers}>
                    {this.state.didMount ?
                        <WebView
                            ref={(ref)=>{this.webView = ref}}
                            style={[styles.webView, {backgroundColor: this.props.pageBackgroundColor}]}
                            source={{uri: rowData.url}}
                            renderLoading={this._renderLoading.bind(this)}
                            renderError={this._renderError.bind(this)}
                            startInLoadingState={true}
                        />
                        :
                        null
                    }
              </View>
          </View>
)
}
componentDidMount(){
        InteractionManager.runAfterInteractions(() => {
            this.setState({
                didMount: true
            });
        });
    }

参考

http://reactnative.cn/docs/0.22/performance.html#content

相关文章

  • RN性能优化之Navigator卡顿优化

    前言 目前RN的导航有Navigator和NavigatorIOS两种。主要的区别在于NavigatorIOS使用...

  • Android开发页面帧率优化有感

    Android APP 优化工具分析Android App优化之消除卡顿Android性能优化:卡顿优化Andro...

  • Android性能优化 - 消除卡顿

    性能优化系列阅读 Android性能优化 性能优化 - 消除卡顿 性能优化 - 内存优化 性能分析工具 - Tra...

  • Android性能优化 - 内存优化

    性能优化系列阅读 Android性能优化 性能优化 - 消除卡顿 性能优化- 内存优化 性能分析工具 - Trac...

  • iOS性能优化 - 整理

    本文主要包含: 性能优化 - 卡顿性能优化 - 耗电优化性能优化 - APP启动优化安装包瘦身 一  性能优化 -...

  • IOS的性能优化包括哪几点

    iOS性能优化总结 iOS性能优化总结。关于 iOS 性能优化梳理: 基本工具、业务优化、内存优化、卡顿优化、布局...

  • iOS 性能优化

    iOS的性能优化主要可提现在以前的几个方面:卡顿优化、耗电优化、启动优化、安装包的瘦身。 1、卡顿优化 在了解卡顿...

  • iOS必读 - 收藏集 - 掘金

    iOS 性能优化总结 - iOS - 掘金关于iOS 性能优化梳理: 基本工具、业务优化、内存优化、卡顿优化、布局...

  • Android-性能优化

    性能优化 卡顿 如何衡量卡顿 "卡顿" 产生的原因 Profile GPU Rendering 通用优化流程第一步...

  • 无标题文章

    APP性能优化 UI卡顿优化 View的绘制原理 UI卡顿原理分析 UI卡顿检测分析 BlockCanary原理分...

网友评论

      本文标题:RN性能优化之Navigator卡顿优化

      本文链接:https://www.haomeiwen.com/subject/oqjcqxtx.html