antd-Mobile走马灯Carousel遇到的坑

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了antd-Mobile走马灯Carousel遇到的坑相关的知识,希望对你有一定的参考价值。

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

原因:

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

解决方法二: 加入componentDidUpdate函数

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

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

carousel 是 layui 模块,主要适用于跑马灯/轮播等交互场景

 carousel 是 layui 2.0 版本中新增的全新模块,主要适用于跑马灯/轮播等交互场景。它可以满足任何类型内容的轮播式切换操作,更可以胜任 FullPage (全屏上下轮播)的需求,简洁而不失强劲,灵活而优雅。

常见的options和方法整理如下:

  <div class="layui-carousel" id="test1" lay-filter="carofilter" style="font-size:larger">
        <div carousel-item>
            <div style="background-color:red">条目1</div>
            <div style="background-color:green">条目2</div>
            <div style="background-color:blue">条目3</div>
            <div style="background-color:mediumorchid">条目4</div>
            <div style="background-color:orange">条目5</div>
        </div>
    </div>
    <!-- 条目中可以是任意内容,如:<img src=""> -->
    <script>
        layui.use('carousel', function () 
            var carousel = layui.carousel;
            //***************************建造实例
            var ins=carousel.render(
                elem: '#test1'
                , width: '500px'     //设置容器宽度
                , arrow: 'always'    //始终显示箭头,可选hover,none
                //,anim: 'updown'    //切换动画方式,可选fade,default
                , full: false        //全屏
                , autoplay: true     //自动切换
                , interval: 1000     //自动切换的时间间隔
                , index: 3           //初始化时item索引,默认时0
                , indicator:'inside' //指示器位置,可选outside,none
            );

            //**************************监听轮播切换事件
            carousel.on('change(carofilter)', function (obj)  //test1来源于对应HTML容器的 lay-filter="test1" 属性值
                console.log(obj.index);     //当前条目的索引
                console.log(obj.prevIndex); //上一个条目的索引
                console.log(obj.item);      //当前条目的元素对象
            );

            //****************************重置轮播
            //var ins = carousel.render(options);
            ins.reload(arrow:'hover');//将arror从alway变成hover
        );
    </script>
  

:这是为了个人查找方便整理的文档,并没有总结完全,查看更多可访问官网http://www.layui.com/doc

作者:捞月亮的猴子

    

出处:捞月亮的猴子 - 博客园

    

欢迎转载,但请标明出处。如果本文对您有些许帮助,点击一下推荐吧,Thanks♪(・ω・)ノ

以上是关于antd-Mobile走马灯Carousel遇到的坑的主要内容,如果未能解决你的问题,请参考以下文章

iview 走马灯carousel 在Modal框里面能使用吗

Element UI之Carousel 走马灯使用示例

Vue项目中使用elementUI中的Carousel 走马灯实现轮播图效果

carousel 是 layui 模块,主要适用于跑马灯/轮播等交互场景

carousel 是 layui 模块,主要适用于跑马灯/轮播等交互场景

修改element ui el-carousel跑马灯实现一次轮播两张图片