uniapp--每两秒切换一次页面

需求:每两秒切换一次页面
思路:使用循环定时器,每两秒显示隐藏一次页面,由于操作频繁,为了不影响性能使用了v-show,未使用v-if


1.return中定义isShow: false


2.页面一:v-show="isShow";页面二:v-show="!isShow"


3.事件:

changeList(){
      this.isShow = !this.isShow
    }

 

以上就实现了两个页面的显示隐藏,如何实现循环切换两个页面呢,在onLoad()中使用setInterval()循环调用changeList()这个函数即可
4.循环调用事件:

this.changeTimer = setInterval(function(){this.changeList()},2000)

 

写到这里可能有伙伴会在想,可以不可以加一个控制按钮,控制是否自动切换,答案当然是可以的啊
思路:点击按钮清除循环、点击按钮重新调用定时器事件

1.view:

<view class="stopBtn" @tap="stopChange">

      <label v-show="isShowState">停止切换</label>

      <label v-show="!isShowState">开始切换</label>

    </view>

 

2.return中定义isShowState: false
3.按钮:v-show="isShowState";v-show="!isShowState"
4.事件:

stopChange() {
                this.isShowState = !this.isShowState;
                let that = this;
                // 根据状态判断清除和调用定时器
                if(this.isShowState == false){
                    clearInterval(that.changeTimer);    // 清除定时器
                }else{
                    this.isShow = !this.isShow;
                    this.changeTimer = setInterval(function(){        // 重新调用定时器
                        that.changeList()
                    },2000)
                }
            }

理清项目需求,话不多说直接上完整代码咯

 

<template>
    <view>
        <view @tap="stopChange">
            <label v-show="isShowState">停止切换</label>
            <label v-show="!isShowState">开始切换</label>
        </view>
        <view v-show="isShow">页面一</view>
        <view v-show="!isShow">页面二</view>
    </view>
</template>

<script>
    export default {
        data() {
            return {
                isShow: true,     // 页面一 页面二
                isShowState: true,    // true:开始切换 false:停止切换
            }
        },
        onLoad() {
            // 定时切换页面显示隐藏
            let that = this;
            this.changeTimer = setInterval(function(){
                that.changeList();
            },2000)
        },
        methods: {
            // 页面循环展示
            changeList(){
                this.isShow = !this.isShow;
            },
            // 停止循环事件
            stopChange() {
                this.isShowState = !this.isShowState;
                let that = this;
                // 根据状态判断清除和调用定时器
                if(this.isShowState == false){
                    clearInterval(that.changeTimer);    // 清除定时器
                }else{
                    this.isShow = !this.isShow;
                    this.changeTimer = setInterval(function(){        // 重新调用定时器
                        that.changeList()
                    },2000)
                }
            }
        }
    }
</script>

<style lang="scss">

</style>

 

【ps】努力不是为了感动谁,也不是做给哪些人看,而是让自己拥有选择的权利,用自己喜欢的方式过一生。

 

posted @ 2021-10-22 16:47  琼菇凉  阅读(841)  评论(0编辑  收藏  举报