小程序引用自定义组件报错组件内容为空或者this.selectComponent为空

写项目的过程中经常遇到弹框,今天刚好遇到俩个一样的弹框,只是弹框的title不一样,就突发奇想分装个自定义模态框,嗯,上网百度了,感觉也不难,但是中途遇到个bug,弄了一个下午加上午也没完成,最后在老大的帮助下,成功解决这个问题。
一开始单写个demo发现点击能够出现弹框,但是放在写有其他内容的页面中死活报错,
主要是 can not read popup of null,也就是组件的内容为空,说下我的解决思路。
①检查要使用该组件的页面json文件中是否写如图内容。
在这里插入图片描述
②引用组件名称是否写错,未给组件分配id或者其他类名,导致找不到该组件。如图
页面中引用的写法
在这里插入图片描述
js中组件准备的时候就要找到自定义组件,注意括号里面根据页面中使用的类名,如果是class那就是点
在这里插入图片描述
③如果上述发现没错,这时候可以打印出组件,看起里面是否有内容,如果有内容如图,则是正确的,截取部分如图
小程序引用自定义组件报错组件内容为空或者this.selectComponent为空_第1张图片
④如果打印出为空,则就是页面中引用的组件位置写错了,因为自定义组件渲染的速度比原有页面渲染的慢,所以你可以写个定时器等页面渲染完再加载自定义组件,或者直接将自定义组件写在最后,这样所有页面渲染完后再调用组件就没问题了。如果你单独开个开个空白界面就会发现没有问题,那是因为你的页面只要渲染自定义组件就行了。
小程序引用自定义组件报错组件内容为空或者this.selectComponent为空_第2张图片
之前就是讲这个组件直接放到黄色箭头后面,导致页面没渲染完就调用该组件,所以为null,最后把组件放在了所有页面的后面。
具体解释可看如下链接:https://blog.csdn.net/Honiler/article/details/86143703

你可能感兴趣的:(小程序)