uniapp项目中在自定义的组件中使用地区选择器无法显示地区列表如下图:
1.首先检查地区列表在初始化的时候有没有被赋值
var addressList = require('../../utils/city.js')
onLoad() {
this.areaList = addressList.default;
console.log(this.areaList,"地区列表")
},

2.根据打印的结果发现地区列表并没有被初始化,后来上网查找资料后发现,在uniapp中使用自定义组件会微信小程序的生命周期,所以我就把微信的生命周期onload(onshow)换成了vue的生命周期
created() {
this.areaList = addressList.default;
console.log(this.areaList,"地区列表")
}
换完vue的生命周期后地区列表虽然被初始化了,但在页面中地区列表还是无法被渲染出来如下图:


3.出现这种情况是我没有预料到的,后来我比较地区选择器在其他页面中的使用情况(没有在组件中运用自定义组件)发现唯一区别就是前者使用了vue的生命周期进行初始化,后者采用了微信小程序的生命周期进行了初始化
//自定义组件中使用地区选择器
created() {
this.areaList = addressList.default;
console.log(this.areaList,"地区列表")
}
//普通页面使用地区选择器
onLoad() {
this.areaList = addressList.default;
console.log(this.areaList,"地区列表")
},
4.经过上述的排查发现问题出现在初始化地区列表上(即生命周期的使用上),既然自定义的组件中的地区选择器无法获取微信小程序onload(onshow)的初始化数据并且无法渲染vue初始化的地区列表,那么我就想到了用onReady这个生命周期(微信小程序)
onReady() {
this.areaList = addressList.default;
console.log(this.areaList,"地区列表")
}

调试到这里这个bug可算是解决了
在Uniapp项目的自定义组件中使用地区选择器,出现无法显示地区列表的问题。经检查,发现是地区列表未初始化,将微信生命周期换成Vue生命周期后仍无法渲染。对比不同页面使用情况,发现问题出在生命周期使用上,最终用微信小程序的onReady生命周期解决了该问题。
1万+

被折叠的 条评论
为什么被折叠?



