antd-Mobile走马灯Carousel遇到的坑

问题:当Carousel数据通过接口获取时,自动切换效果就会无效,且首页展示的高度为默认的最小高度;只有手动切换一张之后,才能启动自动切换,且高度恢复为正常高度;


原因:

1、初次进来数据为空,默认显示最小高度

解决方法一:设置flag值,等数据加载完之后,重新render,此时再加载Carousel组件,就能正常启动了。这种方法的问题是,页面在重新加载时,会有2s左右的延时,性能很不好。


2、state里设置flag初始值
3、数据请求结束后 执行setState


4、flag为true时渲染Carousel

解决方法二: 加入componentDidUpdate函数

依然通过flag去控制是否自动切换,当接口请求结束flag设置为true,render结束后立即执行componentDidUpdate函数,此时数据已经加载完成,这时通过flag设置成自动切换,之所以取反,是因为flag一直为true就会死循环了。亲测如果没有componentDidUpdate函数,只通过componentDidMount函数以及display={flag}来控制,也是行不通的。

5、增加componentDidUpdate周期函数


6、flag控制autoplay

通过百度多种尝试后最后一个可行,但有些原理还不是特别清楚,欢迎指正。

你可能感兴趣的:(antd-Mobile走马灯Carousel遇到的坑)