taro小程序

请问下taro开发小程序的过程中,子组件中的componentDidShow生命周期方法没有被执行,这个应该怎么解决呢

// 父组件代码如下
export default class Index extends Component {

componentWillMount () { }

componentDidMount () { }

componentWillUnmount () { }

componentDidShow () {

console.log('yyyyyyyyyyyy')

}

componentDidHide () { }

render () {

return (
  <View className='index'>
    <Test></Test>
    <Text>Hello world!</Text>
  </View>
)

}
}

// 子组件代码如下
export class Test extends Component {
componentWillMount() { }

componentDidMount() { }

componentWillUnmount() { }

componentDidShow() {

console.log('xxxxxxxxxxxxxxshow')

}

componentDidHide() { }

render() {

return (
  <View>测试</View>
)

}
}

阅读 3.6k
2 个回答

情况一,看下这个链接有关子组件componentDidShow不执行的原因 https://github.com/NervJS/tar...

image.png
排查下是不是微信开发工具基础库版本低

情况二,子组件的 componentDidShow 是跟随页面的 componentDidShow 的,所以组件动态切换是不会触发组件的 componentDidShow,你应该用子组件的 componentWillRecieveProps

首先componentDidShow映射的是onShow这个声明周期,onShow只存在于Page中,Taro子组件只是一个React组件,不存在这个声明周期,所以是无法执行的, 而小程序的自定义组件是可以观测page的onShow方法执行,但是Taro的组件只是一个React组件而已,编译之后只是一段字符串,并不是小程序组件,所以即不能映射Page的onshow,也不能触发自定义组件的onshow,所以是没有办法的。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题