VUE项目学习笔记 v-for绑定数据,该数据异步获取,同时需要对v-for的DOM节点进行js操作

问题描述:

项目里有一个轮播图,轮播图的图片数据从服务器获取,用v-for生成DOM在页面中显示,轮播图插件会通过new Swiper给DOM添加CSS、事件等,实现轮播效果。

在这里存在操作顺序问题:当服务器返回图片数据后,需要更新数据。数据更新后,v-for根据数据先加载完毕,轮播图插件swiper再通过new Swiper操作DOM,否则轮播效果不会起效。

v-for生成DOM:

            <div class="center"><div class="swiper-container" ref="mySwiper"><div class="swiper-wrapper"><div class="swiper-slide" v-for="imagesData in imagesList" :key="imagesData.id"><img :src="imagesData.imgUrl"></div></div><div class="swiper-pagination"></div><div class="swiper-button-prev"></div><div class="swiper-button-next"></div></div></div>

异步请求数据:

this.$store.dispatch('Home/getBannerList');//store语句const mutations = {setBannerList(state, data){state.bannerList = data;}
};const actions = {async getBannerList(context){let bannerData = await requestBannerImage();bannerData = bannerData.data;context.commit('setBannerList',bannerData);}
};

Swiper操作DOM:

            let mySwiper = new Swiper('.swiper-container', {//开启循环模式loop: true,// 如果需要分页器pagination: {el: '.swiper-pagination',},// 如果需要前进后退按钮navigation: {nextEl: '.swiper-button-next',prevEl: '.swiper-button-prev',},});

把逻辑处理放在mounted钩子中,存在的问题:由于请求是异步获取,在mounted中虽然其他DOM已经加载,但是数据还未完全返回,因此v-for还未执行完毕,相当于v-for的加载也是异步的。new Swiper时,v-for的DOM还未生成,因此对DOM操作无法生效。

解决方案:

使用nextTick()

简单介绍nextTick(回调函数):等待下一次 DOM 更新刷新的工具方法。

当页面中DOM发生变化时,并不会马上更新页面,而是把修改推入队列,再统一处理。

nextTick()执行后,可以让推入队列中的DOM修改生效。nextTick中的回调会在修改生效后执行。

用watch()监听列表数据的改变,列表数据改变后,用nextTick推到DOM上,再用Swiper操作DOM。

watch:{List:{handler(newValue, oldValue){this.$nextTick(()=>{... = new Swiper()})}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/89468.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/89468.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Science | 如何利用“T细胞+组蛋白乙酰化”两大国自然热点?T细胞耗竭机制与代谢-表观遗传调控的新范式

CD8⁺T细胞耗竭&#xff08;T cell exhaustion&#xff09;是肿瘤免疫治疗的核心瓶颈&#xff0c;其表观遗传重塑机制&#xff08;如组蛋白修饰&#xff09;是当前国自然重点资助的前沿方向。耗竭T细胞&#xff08;TEX&#xff09;是指在慢性感染&#xff08;如持续性病毒感染&…

Logback 配置的利器:深入理解<property>与<variable>

在构建现代 Java 应用程序时&#xff0c;日志是不可或缺的一部分。一个健壮的日志系统不仅能帮助我们监控应用程序的运行状态&#xff0c;还能在问题发生时提供关键的诊断信息。Logback 作为 SLF4J 的一个流行实现&#xff0c;以其高性能和灵活的配置而广受开发者喜爱。 然而&a…

Java中excel字典转换

✅ 背景说明EasyExcel 原生的 ExcelProperty 注解不支持 dictType&#xff08;不像那样有 Excel(dictType"xxx")&#xff09;&#xff0c;所以如果你想实现字典翻译功能&#xff0c;就需要自己实现 Converter 接口&#xff0c;比如 DictConvert。✅ 什么是 DictConve…

数据结构-3(双向链表、循环链表、栈、队列)

一、思维导图二、双向循环链表的判空、尾插、遍历(反向)、尾删class Node:def __init__(self, data):self.data dataself.next Noneself.prior Noneclass circularDoublyLinkedList():def __init__(self):self.head Noneself.tail Noneself.size 0def isEmpty(self):retu…

IDEA运行Tomcat一直提示端口被占用(也查不到该端口)

首先查看是否是因为Java程序异常终止&#xff0c;进程没有完全释放导致。打开资源管理器&#xff0c;找到所有的java.exe&#xff0c;强制结束任务。如果仍然不行&#xff0c;那就极可能还是开启了hyper-V虚拟化&#xff0c;查看排除的tcp端口范围端口号没被占用却提示占用&…

AWS Lambda 最佳实践:构建高效无服务器应用的完整指南

引言 AWS Lambda 作为无服务器计算的核心服务,让开发者能够专注于业务逻辑而无需管理服务器。本文将通过实际案例和代码示例,分享 Lambda 开发中的关键最佳实践。 1. 函数设计原则 单一职责原则 每个 Lambda 函数应该只做一件事,这样更容易测试、维护和扩展。 # ❌ 不推…

29、鸿蒙Harmony Next开发:深浅色适配和应用主题换肤

目录 应用深浅色适配 应用跟随系统的深浅色模式 应用主动设置深浅色模式 系统默认判断规则 使用建议与限制 设置应用内主题换肤 概述 自定义主题色 设置应用内组件自定义主题色 设置应用局部页面自定义主题风格 设置应用页面局部深浅色 系统缺省token色值 应用深浅…

源鉴SCA4.9︱多模态SCA引擎重磅升级,开源风险深度治理能力再次进阶

SCA技术已成为数字供应链开源治理的关键入口。源鉴SCA深度融合悬镜原创专利级AI智能代码疫苗技术&#xff0c;是国内首款集源码组件成分分析、代码成分溯源分析、制品成分二进制分析、容器镜像成分扫描、运行时成分动态追踪及开源供应链安全情报预警分析等六大核心引擎为一体的…

Git语义化提交规范及提交模板设置

Git语义化提交规范&#xff08;Conventional Commits&#xff09; &#x1f4da; 常见的语义化提交类型包括&#xff1a;类型含义说明feat✨ 新增功能&#xff08;feature&#xff09;fix&#x1f41b; 修复 bugdocs&#x1f4da; 修改文档&#xff08;如 README&#xff09;st…

用TensorFlow进行逻辑回归(五)

Softmax分类#List3-50%matplotlib inlineimport numpy as npimport tensorflow as tfimport matplotlib.pyplot as pltx1_label0 np.random.normal(1, 1, (100, 1))x2_label0 np.random.normal(1, 1, (100, 1))x1_label1 np.random.normal(5, 1, (100, 1))x2_label1 np.ran…

基于 Django + 协同过滤算法的电影推荐系统设计与实现

&#x1f3ac; 基于 Django 协同过滤算法的电影推荐系统设计与实现✍️ 本项目由成都理工大学宜宾校区的三位同学曾铭杨、杨皓麟、陈禧锦共同完成。项目以豆瓣电影数据为基础&#xff0c;通过协同过滤算法为用户构建个性化电影推荐服务&#xff0c;是一款集数据爬取、推荐算法…

小白全栈项目部署指南

小白全栈项目部署指南&#xff1a;前端后端数据库完整攻略 &#x1f4d6; 写在前面 当你学会了基础的静态网站部署后&#xff0c;是不是想挑战更有趣的项目&#xff1f;比如一个能够注册登录、保存数据的完整应用&#xff1f; 这就需要学习全栈项目部署了&#xff01; 别被&quo…

C# Linq 左关联查询详解与实践

在 C# 开发中&#xff0c;Linq&#xff08;Language Integrated Query&#xff09;提供了强大的数据查询能力&#xff0c;尤其是在处理集合间的关联操作时。本文将详细解析 C# Linq 中的左关联查询&#xff0c;并通过实际案例说明其用法。左关联查询基础左关联&#xff08;Left…

【机器学习深度学习】LoRA 微调详解:大模型时代的高效适配利器

目录 前言 一、LoRA 的核心思想 二、LoRA 为什么高效&#xff1f; ✅ 1. 参数效率 ✅ 2. 内存友好 ✅ 3. 即插即用 三、LoRA 适用场景 四、LoRA 实践建议 五、LoRA 和全参数微调对比 六、 LoRA的具体定位 &#x1f4cc; 总结 &#x1f517; 延伸阅读 前言 在大模型…

vue页面不销毁的情况下再返回,总是执行created,而不触发 activated

vue页面不销毁的情况下再返回&#xff0c;总是执行created&#xff0c;而不触发 activated 原因&#xff1a; 没有进行页面缓存地址和页面组件的name没对上 解决方案: 组件只有在被 包裹时才会触发 activated 和 deactivated 生命周期 如果没有被缓存&#xff0c;每次进入路由…

从 C# 到 Python:6 天极速入门(第二天)

作为一名资深 C# 开发者&#xff0c;我们在第一天已经掌握了 Python 的基础语法框架。今天我们将深入 Python 的特色语法与高级特性&#xff0c;通过实际项目开发场景的代码对比&#xff0c;理解这些特性在真实业务中的应用价值。一、简洁语法糖&#xff1a;项目开发中的实战应…

MyBatis 动态 SQL:让 SQL 语句随条件灵活变化

目录 1. 动态SQL 1.1. if 1.1.1. 持久层接口添加方法 1.1.2. 映射文件添加标签 1.1.3. 编写测试方法 1.2. where 1.3. set 1.4. choose、when、otherwise 1.5. foreach 1.5.1. 遍历数组 1.5.2. 遍历Collection 1.5.3. 遍历Map 2. 总结 前言 本文来讲解MyBatis的动…

AI 驱动的仪表板:从愿景到 Kibana

作者&#xff1a;来自 Elastic Jeffrey Rengifo 及 Toms Mura 使用 LLM 处理图像并将其转换为 Kibana 仪表板。 想获得 Elastic 认证&#xff1f;了解下一次 Elasticsearch Engineer 培训的举办时间&#xff01; Elasticsearch 拥有众多新功能&#xff0c;帮助你为你的使用场景…

AI产品经理面试宝典第17天:AI时代敏捷开发与MVP构建面试题与答法

机器学习MVP构建问题怎么答? 面试官:请举例说明如何将业务问题转化为机器学习可解的问题? 你的回答:以电商供应商评价为例,传统方法用人工设定的低维度指标评分,而机器学习能利用大数据构建高维模型。比如通过供应商历史交易数据、物流时效、售后投诉率等数百个特征,训…

HBase2.5.4单机模式与伪分布式的安装与配置(Ubuntu系统)

HBase的安装也分为三种&#xff0c;单机模式、伪分布式模式、完全分布式模式&#xff1b;我们先来安装单机版。 一、环境准备 1. 系统要求 Ubuntu 20.04/22.04 LTS Java 8&#xff08;必须&#xff0c;HBase不兼容更高版本&#xff09; Hadoop&#xff08;单机模式不需要&a…