taro 生命周期方法 componentDidShow 不执行

在TaroJS 3.0.2版本中,遇到组件生命周期方法componentDidShow不执行的问题,经排查发现是由react-redux版本号差异引起,将版本号从^7.2.0精确到7.2.0后问题解决。

taro 生命周期方法 componentDidShow 不执行

环境说明

  • taro版本:3.0.2
  • taro-cli版本: 3.0.2、3.0.5、3.0.7
  • package.json:如下
"dependencies": {
    "@babel/runtime": "^7.7.7",
    "@tarojs/components": "3.0.2",
    "@tarojs/react": "3.0.2",
    "@tarojs/runtime": "3.0.2",
    "@tarojs/taro": "3.0.2",
    "@tdsdk/wxtdapi": "^0.6.1",
    "dva-core": "^2.0.2",
    "dva-loading": "^3.0.20",
    "react": "^16.10.0",
    "react-dom": "^16.10.0",
    "react-redux": "^7.2.0",
    "redux": "^4.0.5",
    "taro-ui": "^3.0.0-alpha.3"
  },
  "devDependencies": {
    "@babel/core": "^7.8.0",
    "@tarojs/mini-runner": "3.0.2",
    "@tarojs/webpack-runner": "3.0.2",
    "@types/react": "^16.0.0",
    "@types/webpack-env": "^1.13.6",
    "babel-preset-taro": "3.0.2",
    "del": "^5.1.0",
    "eslint": "^6.8.0",
    "eslint-config-taro": "3.0.2",
    "eslint-plugin-import": "^2.12.0",
    "eslint-plugin-react": "^7.8.2",
    "eslint-plugin-react-hooks": "^1.6.1",
    "stylelint": "9.3.0",
    "terser-webpack-plugin": "^3.0.6"
  }

原因分析和解决方案

首先从微信原生onShow开始跟踪,发现最终因为inject方法没有被调用所致:
在这里插入图片描述
对比另外一个同事可以正常运行的代码,发现存在如下差异:
在这里插入图片描述
最终,发现两边的react-redux版本不一致所致。之所以会有差异,是因为package.json中配置的react-redux版本号为^7.2.0,修改为7.2.0问题解决

总结

尽量不要在package.json中使用^来定义版本依赖,避免系统自动升级导致的兼容问题(按标准说,这个其实算是react-redux的bug,毕竟升级最末尾版本号不应该导致兼容问题)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值