React原生作品在android上非常慢

时间:2016-02-17 06:36:32

标签: react-native

通过'非常慢'我的意思是,尽管这只是一个简单的示例应用程序,它加载一个大约5秒的过渡。

Here is the whole app RN code

查看onPressFeed

3 个答案:

答案 0 :(得分:4)

这为我节省了很多时间:

  • 在代码中搜索“console.log”,并在测试前对其进行评论。
  • 关闭“JS开发模式”

您需要确保关闭“JS开发模式”,否则它 将在设备上运行缓慢。

这是你在Android上禁用JS开发模式的方法:

运行“react-native run-android”后,你应该“摇动”你的设备 调出菜单。选择“开发设置”,然后取消选中“JS开发模式”。

之后再次运行“react-native run-android”,它应该更多 高效,至少我希望你:)

来源:https://github.com/aksonov/react-native-router-flux/issues/199

答案 1 :(得分:3)

您运行的是什么版本的React Native?你在运行什么手机?

如果你在Android模拟器上运行React Native,它会非常慢。此外,如果您启用了Chrome调试,它会使应用程序速度降低。

我在三星Galaxy s4设备上运行了一个相当简单的React Native应用程序,它运行得相当快(动画运行也相当顺利)。

我运行的一些示例代码(带有动画的侧边图和主视图):

_renderCancel: function(){
  if (this.state.showView) {
    return (
      this.props.view
    );
  } else {
     return ;
   }
},

render: function() {

var menu = <Menu 
              closeDrawer={this.closeDrawer}
              navigator={this.props.navigator} 
              modifyOnClose={this.modifyOnClose} />;


return (
  <Drawer
    ref="drawer"
    onClose={this.onClose}
    type={this.state.drawerType}
    animation={this.state.animation}
    openDrawerOffset={this.state.openDrawerOffset}
    closedDrawerOffset={this.state.closedDrawerOffset}
    panOpenMask={this.state.panOpenMask}
    panCloseMask={this.state.panCloseMask}
    relativeDrag={this.state.relativeDrag}
    panStartCompensation={this.state.panStartCompensation}
    openDrawerThreshold={this.state.openDrawerThreshold}
    content={menu}
    styles={drawerStyles}
    disabled={this.state.disabled}
    tweenHandler={this.tweenHandler}
    tweenDuration={this.state.tweenDuration}
    tweenEasing={this.state.tweenEasing}
    acceptDoubleTap={this.state.acceptDoubleTap}
    acceptTap={this.state.acceptTap}
    acceptPan={this.state.acceptPan}
    changeVal={this.state.changeVal}
    negotiatePan={false}
    side={this.state.rightSide ? 'right' : 'left'}
    >
    <View>
      <CustomToolBar onPress={this.openDrawer}/> 
      {this._renderCancel()}   
    </View>
  </Drawer>

);
},

这在我的设备上运行得相当快。

答案 2 :(得分:0)

关闭生产中的登录记录

在您的输入文件中,尝试添加以下代码段:

if (!__DEV__) {
  console.log = () => {};
}

这将允许控制台日志在开发过程中工作,但是当您发布用于生产时,这只是一个空函数调用。