最近在做一个需求时偶尔发现一个 bug ,排查很久后发现是因为调用
this.selectComponent
时没有获取到组件的问题。
分析
- 没有在父组件渲染时的生命周期中调用,所以不会是页面和组件的渲染流先后问题
- 在其地方调用时能获取到,所以不会是组件的问题
- 只有在某些时间点调用才会是 null ,分析那些时间点所做的操作
原因
- 在那个时间点里改变的一个值的判断,而组件使用
wx:if
来判断是否显示组件,而当不显示组件时,调用this.selectComponent
为 null
总结
- 当使用
this.selectComponent
获取组件前,应该检查组件是否有使用wx:if
,如果有使用的话应该考虑是否存在上面的问题,然后再单独处理。