Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

编译成微信小程序后 componentWillReceiveProps 这个生命周期函数的触发有问题 #2818

Closed
RunningCoderLee opened this issue Apr 18, 2019 · 13 comments
Assignees

Comments

@RunningCoderLee
Copy link

问题描述

taro 在编译成微信小程序后 componentWillReceiveProps 这个生命周期函数的触发有问题

复现步骤

  1. clone https://github.com/RunningCoderLee/myMiniApp 这个项目到本地后安装依赖并运行
  2. 小程序启动后 点击页面上的 asyncAdd 按钮,2秒后观察控制台
  3. 此时 log 记录了 2次 componentWillReceiveProps 的调用,并打印了方法中的 this.propsnextProps 的值

期望行为

正常情况下,第一次 componentWillReceiveProps 方法中的 nextProps 的值应该等于 第二次 componentWillReceiveProps 方法中的 this.props 的值,但实际这2个值并不一样

报错信息

image

系统信息

  Taro CLI 1.2.24 environment info:
    System:
      OS: macOS 10.14.4
      Shell: 5.3 - /bin/zsh
    Binaries:
      Node: 11.9.0 - /usr/local/bin/node
      Yarn: 1.13.0 - /usr/local/bin/yarn
      npm: 6.5.0 - /usr/local/bin/npm
    npmPackages:
      @tarojs/async-await: 1.2.24 => 1.2.24 
      @tarojs/components: 1.2.24 => 1.2.24 
      @tarojs/plugin-babel: 1.2.24 => 1.2.24 
      @tarojs/plugin-csso: 1.2.24 => 1.2.24 
      @tarojs/plugin-sass: 1.2.24 => 1.2.24 
      @tarojs/plugin-uglifyjs: 1.2.24 => 1.2.24 
      @tarojs/redux: 1.2.24 => 1.2.24 
      @tarojs/redux-h5: 1.2.24 => 1.2.24 
      @tarojs/router: 1.2.24 => 1.2.24 
      @tarojs/taro: 1.2.24 => 1.2.24 
      @tarojs/taro-alipay: 1.2.24 => 1.2.24 
      @tarojs/taro-h5: 1.2.24 => 1.2.24 
      @tarojs/taro-swan: 1.2.24 => 1.2.24 
      @tarojs/taro-tt: 1.2.24 => 1.2.24 
      @tarojs/taro-weapp: 1.2.24 => 1.2.24 
      @tarojs/webpack-runner: 1.2.24 => 1.2.24 
      eslint-config-taro: 1.2.24 => 1.2.24 
      eslint-plugin-taro: 1.2.24 => 1.2.24 
      nervjs: ^1.3.9 => 1.3.13 

补充信息

在使用 h5 模式下是正常的,在编译成小程序后就不符合正常的生命周期调用了

@taro-bot
Copy link

taro-bot bot commented Apr 18, 2019

欢迎提交 Issue~

如果你提交的是 bug 报告,请务必遵循 Issue 模板的规范,尽量用简洁的语言描述你的问题,最好能提供一个稳定简单的复现。🙏🙏🙏

如果你的信息提供过于模糊或不足,或者已经其他 issue 已经存在相关内容,你的 issue 有可能会被关闭。

Good luck and happy coding~

@RunningCoderLee
Copy link
Author

请问这个问题有什么进展吗?

@Chen-jj
Copy link
Contributor

Chen-jj commented Apr 30, 2019

@RunningCoderLee 考虑中

@yz1311
Copy link

yz1311 commented Jul 4, 2019

+1,我还以为我代码有问题,componentWillReceiveProps触发了,但是this.props===nextProps
image

@ItxiaoDz
Copy link

+1,也是小程序中出现。感觉有点现是this.props和nextProps用了同一个对象了

@Yaphet2015
Copy link

Yaphet2015 commented Aug 5, 2019

+1 v1.3.11
我这边遇到的问题是,上一周期判断 nextProps.XXX 和 this.props.XXX 新旧值是正常的。
但是到下一次触发新的 componentWillReceiveProps 时,正常情况下这一轮周期的 this.props.XXX 应该等于上一轮周期的 nextProps.XXX
但实际这一轮周期的 this.props.XXX 还是为空,导致预期的判断逻辑错误了

@nsyujian
Copy link

nsyujian commented Aug 27, 2019

类似的问题1.3.14 this.props.value === nextProps.value, 1.2.26是正常的

@nsyujian
Copy link

@Chen-jj

@Yaphet2015
Copy link

更新到 v1.3.18 发现问题还是存在

@shenghanqin
Copy link
Collaborator

@RunningCoderLee 试试看最新版吧?weapp: 修复微信小程序遗留代码:nextProps 初始化,引起的冲突 (00cf71c)

@RunningCoderLee
Copy link
Author

最近没有在用 taro 了,请还在使用的同学帮忙看下吧,如果已解决麻烦告知我一下,我把 issue 关了

@JasonYan2015 @ItxiaoDz @yz1311

@taro-bot
Copy link

taro-bot bot commented Nov 14, 2019

Hello~

您的问题楼上已经有了确切的回答,如果没有更多的问题这个 issue 将在 15 天后被自动关闭。

如果您在这 15 天中更新更多信息自动关闭的流程会自动取消,如有其他问题也可以发起新的 Issue。

Good luck and happy coding~

@Chen-jj
Copy link
Contributor

Chen-jj commented Jul 2, 2020

Taro3 应该没有这个问题了。

@Chen-jj Chen-jj closed this as completed Jul 2, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

7 participants