react-native 0.57 版本更新日志

4,499 阅读8分钟

[0.57]

欢迎来到React Native版本的0.57版!这个版本解决了许多问题,并有一些令人兴奋的改进。我们再次跳过了一个月发布,通过扩展发布候选阶段关注质量,并且兼容之前的版本

这个版本包括599提交由73个不同的贡献者!为了响应反馈,我们准备了一个只包含用户影响的更改的变更日志。请分享您的意见,并让我们知道我们如何使这更有用,如果您对此有任何反馈,和往常一样请告知我们let us know

Highlights

New features

Tooling updates

  • Android构建工具已经升级,需要(SDK 27, gradle 4.4, and support library 27);由于Android编译工具暂时不支持3.2,所以请暂时停留在3.1版本
  • 支持 Babel 7 请阅读 here about using TypeScript and check out the Babel 7 migration guide for help migrating.
  • Metro已经升级(with Babel 7 and better transformer support),并在接下来的主要版本中,我们计划有两个新功能(ram bundles and inline requires)可供大家选择; 此外,如果您有自定义打包程序配置,我们建议您还阅读。here; moreover, if you have a custom packager config, we recommend you read also the "updating to this version" section.
  • Flow,React和相关包也已更新,它包括 working support for the React Profiler.

The Slimmening is happening

正如过去几次提到的那样,核心团队正在审查存储库以将其更改为React Native的基本功能,以便使整个生态系统更易于维护(通过使用dividi-et-impera方法,社区将更快地移动并使拉取请求更快地被审查和合并)。此更改需要将一些组件提取到他们自己的单独存储库中并删除旧的,未使用的代码(此处的详细信息)。 (details here).

任何更改都不会直接影响0.57 ,但我们希望您知道:

  • WebView将在react-native-community / react-native-webview它自己的repo上移除。WebView很快就会弃用 react-native-community/react-native-webview
  • NavigatorIOS将从主代码库中完全删除,从0.58.0开始(通过此提交); 它已被弃用(via this commit); it is now deprecated

Updating to this version

  1. 升级React Native版本到0.57.0, 同时 React 版本到 16.5

  2. 将babel预设依赖项从"babel-preset-react-native": "^5",更改为"metro-react-native-babel-preset": "^0.45.0",,然后将.babelrc配置更改为

      {
        "presets": ["module:metro-react-native-babel-preset"]
      }
    
  3. 确保您的babel版本时^7.0.0(您可能还需要添加babel-core": "7.0.0-bridge.0"以确保兼容性)

  4. 如果您有自定义打包程序配置rn-cli.config.js,则可能需要更新它以使用更新的Metro配置结构(有关详细信息,请参阅Metro的文档); 以下是一些常见的变化rn-cli.config.js:

    -const blacklist = require('metro/src/blacklist')
    +const blacklist = require('metro-config/src/defaults/blacklist')
    
    // ...
    
    module.exports = {
    +  watchFolders: alternateRoots,
    +  resolver: {
    +    blacklistRE: blacklist
    +  },
    +  transformer: {
    +    babelTransformerPath: require.resolve('./scripts/transformer.js'),
    +  },
    -  getProjectRoots() {
    -    return [
    -      path.resolve(__dirname),
    -    ].concat(alternateRoots)
    -  },
    -  getBlacklistRE() {
    -    return blacklist;
    -  },
    -  transformModulePath: require.resolve('./scripts/transformer.js'),
    }
    
  5. 运行yarn命令确保安装所有新依赖项

Added: new features

Android specific additions

-允许注册自定义打包程序命令处理程序 (b3ef1c3 by @fkgozali)

iOS specific additions

Changes: existing functionality that is now different

Android specific changes

Fixed: bugs that have been resolved

Android specific fixes

  • 修复AsyncStorage在Android 7+上运行不正常的问题 (1b09bd7)
  • 修复终端使用缓慢 (5017b86 by @gnprice)
  • 修复 <TextInput> 占位符不可见 (8402232 and 86f24cc by @jainkuniya)
  • 在使用RTL内容更改布局期间修复水平的滚动位置 (de57327)
  • 修复水平问题 (d5465a9)
  • 修复ReactTextInputLocalData在SDK15上的奔溃 (1bb2bea)
  • 修复ReactScrollView的绘图Rect (6a16bec by @yungsters)
  • 修复了从ReadableNativeMap抛出的NoSuchKeyException,如果密钥不存在则通过默认为0来释放ReadableMap (1a6666a by @Bhavik-P)
  • 修复了runAndroid,以便在Windows8081端口运行包 (3cd0737 by @ihenshaw)
  • 尝试在不同质量的网络上获取数据时,不要在上传重试时崩溃 (7a246e4 by @dryganets)

iOS specific fixes

Removed: features that have been removed; these are breaking

  • [BREAKING] 删除ScrollView.propTypes; 使用flow或typescript来验证正确性 (5b6ff01 by @sahrens)

Android specific removals

  • ReactInstancePackage现已弃用; 使用@link ReactPackage或@link LazyReactPackage (b938cd5 by @axe-fb)

关注小编 公众号:LearningTech 每日更新前端技术