随笔:vue中nextTick的妙用

如果遇到需要刷新dataList来清空列表数据,但是又不想视图因为短暂的清空造成页面闪烁影响用户体验,这时可以用nextTick对dataList进行清空,这样可以利用nextTick的特性在js逻辑和渲染视图中间进行清空,在视图刷新前让vue内部逻辑跑完,刷新虚拟dom,再更新真实dom。

// 更新当前渲染的数据
    const updateCurrentRenderData = (tabName: string) => {
        dataList.value = [];
        // 这里如果用setTimeout就会在下一个事件循环中进行,页面会发生闪烁。如果什么都不用,连续赋值,则无意义。
        nextTick(() => {
            const currentTabData = localCacheSearchDataList.value.find(item => item.tabInfo.materialType === tabName);
            if (currentTabData) {
            // 更新当前渲染的数据
                dataList.value = currentTabData.dataList;
                // 设置设置当前渲染的页码
                const {
                    setCurrentPage,
                    setPageSize,
                    setTotalCount
                } = usePagination();
                setCurrentPage(currentTabData.pageInfo.page);
                setPageSize(currentTabData.pageInfo.size);
                setTotalCount(currentTabData.pageInfo.total);
            } else {
            // 无数据重置当前页面
                initRenderData();
            }
        });
    };
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 都会用 nextTick,也都知道 nextTick 作用是在下次 DOM 更新循环结束之后,执行延迟回调,就可以...
    IT沐华阅读 5,857评论 0 7
  • Vue基础: 谈谈对组件的理解组件化开发能大幅提高应用开发效率、测试性、复用性常用的组件化技术:属性、自定义事件、...
    Ltraveller阅读 3,725评论 0 2
  • js事件循环 js处理异步主要有微任务(microTask)和 宏任务 (macroTask),而从开始执行一个宏...
    好奇男孩阅读 4,296评论 0 1
  • 基础类问题 h5的新特性 html5备注只有一种 DOCTYPE ⽂件类型声明(统 一标准)<!DOCTYPE h...
    h2coder阅读 1,534评论 1 1
  • 本篇文章主要是对Vue中的DOM异步更新策略和nextTick机制的解析,需要读者有一定的Vue使用经验并且熟悉掌...
    wdapp阅读 3,923评论 0 1