uniapp中自定义的组件中使用地区选择器无法渲染地区列表

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

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可算是解决了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值