react-native 升级0.62的坑

最近升级RN 0.62 放出自己碰到的一些坑.

总的来说0.61.5->0.62 改变还是有些的,如果你的项目第三方比较少升级还是挺好升的.

这里提醒,
公司开发的时候,尽量自己写轮子,自己去印证.
这样后期会很愉快.

iOS

首先先看下升级助手,大概的改动
升级助手
我们可以看到jscallinvoker 是有被删掉的, 所以项目里删除就好了

image.png

到这里 基本上就结束了,
当然0.62又添加了自己的debug 工具 叫Flipper

image.png

看样子还是不错的,但是项目中 还没时间来集成这个.
还有个重要的更新:
就是黑暗模式:
官方文档是这样的
由此看来 RN 以后使用hook的频率会很高,看来小伙伴要 很优雅的去继承了
也要有一种思想就是 函数组件,而不是类组件了

import {Text, useColorScheme} from 'react-native';

const MyComponent = () => {
  const colorScheme = useColorScheme();
  return useColorScheme(): {colorScheme};
};

下面说重点:

TypeError: Super expression must either be null or a function


image.png

头疼的事情来了,无法跟踪.
估计很多小伙伴估计也都百度过了,
很多人都说是继承的问题
例如:

export default class Base extends React.Component {
  // netInfoListen: any;
  constructor(props) {
    super(props);
    this.setStatusBar()
    this.state = {
        
      };

}

//import React, { Component } from 'react';  
导入的问题,有些代码可能写错  不要再'react-native'里导入
大家要看看自己的代码 翻查一遍

最终也是类似这个问题
我发现我的第三方插件中有一些类是这样继承的

export default class NavigationButton extends TouchableOpacity

//基本是继承的问题,
//项目里碰到很多这种情况,并且很难跟踪,最后全部抽出来变成自己组件.花了大量时间
//改成
export default class NavigationButton extends React.Component

OK
很多第三方语法会出现问题.
希望可以帮助到小伙伴

Android

更改之后 安卓是可以顺利
如果你的项目继承了codepush
那么.... 继续看....
找到settings.gradle


//注意要把 apple from......... 放到  react-native-code-push 前面
//这里等到codepush  更新吧  临时解决方案
apply from: file("../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesSettingsGradle(settings)
include ':app'
include ':react-native-code-push'
project(':react-native-code-push').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-code-push/android/app')


你可能感兴趣的:(react-native 升级0.62的坑)