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

安卓微信内使用navigatorTo跳转,返回后,componentDidMount 会再次执行 #4670

Closed
xiangjiejie opened this issue Oct 23, 2019 · 5 comments
Assignees

Comments

@xiangjiejie
Copy link

xiangjiejie commented Oct 23, 2019

问题描述
安卓微信内,页面A使用navigatorTo跳转页面B,返回后,页面A componentDidMount 会再次执行。
页面A会生成新的实例,存在多个实例,导致页面越来越卡
IOS内,页面A componentDidMount不会再次执行

复现步骤
页面A 使用Taro.navigatorTo 跳到页面B,返回页面A

可复现代码
pageA

import Taro, { Component } from '@tarojs/taro'
import { View, Text } from '@tarojs/components'

class Index extends Component {
  componentDidMount () {
    console.log('componentDidMount');
  }

  navigator = () => {
    Taro.navigateTo({
      url: '/pages/demo/index'
    })
  }

  render () {
    return (
      <View className='index'>
        <Text onClick={this.navigator}>navigator</Text>
      </View>
    )
  }
}

export default Index 

pageB

import Taro, { Component } from '@tarojs/taro'
import { View } from '@tarojs/components'

class Demo extends Component {
  render () {
    return (
      <View className='demo'>
        demo
       
      </View>
    )
  }
}

export default Demo 

期望行为
返回后,页面A不再执行componentDidMount,不应该存在多个相同的实例

报错信息
页面A刚加载:一个taro_page
11
页面A返回后:两个taro_page
11_2

系统信息

Taro v1.2 及以上版本已添加 taro info 命令,方便大家查看系统及依赖信息,运行该命令后将结果贴下面即可。

  • 操作系统: 安卓 + 微信
  • Taro 版本 1.3.14
  • 报错平台 H5
@taro-bot
Copy link

taro-bot bot commented Oct 23, 2019

欢迎提交 Issue~

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

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

Good luck and happy coding~

@taro-bot
Copy link

taro-bot bot commented Oct 24, 2019

CC @Littly

@Chen-jj Chen-jj added the H5 label Oct 24, 2019
@Chen-jj
Copy link
Contributor

Chen-jj commented Oct 24, 2019

@xiangjiejie 最好能提供一份完整可复现代码

@xiangjiejie
Copy link
Author

@xiangjiejie 最好能提供一份完整可复现代码

已贴代码,请查看。可能还是部分安卓微信会出现这种情况

@shenghanqin
Copy link
Collaborator

您可以尝试一下在ios上是不是也有同样的问题?

因为我还没深入接触到Taro的核心,我说一下我的浅显理解。
小程序分为JS核心层和View视图层,而视图层可能有多个,中间用原生层来通信。也就是说,PageA页面跳到PageB时,PageA页面的视图层还存在着,只是暂时onHide啦。返回时只会触发onShow。

而h5中,其实跟React上差不多,是在一个网页容器中实现的跳转,那么返回PageA页面时,还是会触发ComponentDidMount的。

@Chen-jj Chen-jj closed this as completed Jul 29, 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

4 participants