Taro2升级Taro3详细过程记录

425 阅读3分钟

taro2升级taro3流程记录

  • 建议直接新建一个最新的taro项目,从旧版本迁移到 Taro Next,这个根本没有一点作用,把 package.json 中使用的依赖手动一项一项的安装过来,虽然笨了一点,但是有效
  • 项目中的config.js使用新建项目自带的,再把老项目中想要的配置加回来

上面的步骤完成后 npm run dev:weapp大概率可以运行起来了

接下来还需要进行的操作

  1. 把所有import {Component} from "@tarojs/taro" 替换成 import {Component} from "react"
  2. 修改app.js,删除Taro.render(<App />, document.getElementById('app')),添加export default App;
  3. 页面的 config
  // 不支持这种config, 需要把config提到单独的文件里面去 xxx.config.js
  config = {
    navigationBarTitleText: "首页",
  };
  <!-- 或者使用下面的形式 -->
  definePageConfig({
    navigationBarTitleText: "首页",
  })
  1. 路由,在旧版本中可以通过 this.$router 访问当前组件/页面路由的详情。在 Taro3x 对应的 API 是在 @tarojs/taro 中的 getCurrentInstance().router,两者的属性一模一样。
  2. 样式,Taro3x中没有组件的外部样式和全局样式 的概念,组件的配置(config.js)是无效的,页面和入口文件引入的 CSS 都会变成全局 CSS ,没有了 externalClasses 和 addGlobalClass 这两个概念。推荐使用CSS ModulesTaro中使用 CSS Modules。

推荐使用自定义转换模式,这样的话就不会影响到一些第三方库的样式了!!!

一般情况下,我们在app.js中会引入样式文件,import './app.less' 这个样式文件在Taro3中一定要保证只能在 app.js 中引入 其它文件不能引入这个文件,否则编译成的微信小程序中不会生成app.wxss文件, 会导致如果你⻚面存在嵌套过深的组件就 会导致部分组件的样式丢失 taro不生成app.wxss文件

  1. this指向问题
  // 在Taro2x当中你可能会这样写一些函数,这个this还是指向taro中的实例,可以从props中解构
  // 但在Taro3中,你需要 把这个函数改成箭头函数的形式 才能保证不会出错 swichEdit = () => {}
  swichEdit() {
    const { id } = this.props
    this.getUserInfo(id)
  }
  1. 标签未引入,例如在代码中使用 Image 组件,但并没有从 @tarojs/components 引入,在2x中可能不会报错,但在3x中一定会报错

当小程序中有接入微信卡包,页面分享等需要获取外部链接进入小程序的参数,特别注意 2 和 3 中细微的差异,所有需要分享的参数必须经过encodeURIComponent加密,使用的时候使用decodeURIComponent,升级完成后,要尽可能的测试这方便的逻辑,在我自己升级的时候,我就发现这个参数情况特别复杂,相同的写法在 2 和 3 中获取到的参数不一样

6.png 7.png

8.png

升级后的性能提升,打包和编译速度提升很明显

  • 打包 9.png
  • 编译 10.png

参考链接