vue中异步请求渲染问题(swiper不轮播)(在开发过程中遇到过什么问题)

问题描述:

  用vue封装一个swiper组件的时候,发现轮播图不能轮播了。

原因:

  异步请求的时间远大于生命周期执行的时间,mounted初始化DOM时数据未返回,渲染数据是空数组,导致轮播图的容器层宽度为0,渲染轮播图不能滚动。

解决思路:

  数据返回之后再做初始化操作。

解决方法:

  一、容器没有宽度,就想着给容器设置一个宽度,但是一旦设置死数据了后期维护起来很麻烦。

  二、设置一个定时器,延长等待的时间,但是无法确定网络请求的时间,这样操作严么会等待时间过长,影响用户体验,要么是还没有请求完就去获取数据,这样依然是不行。

  三、vue提供了一个全局API,Vue.$nextTick(),它的作用是获取数据更新后最新的DOM结构。$nextTick()是同步的,但是里面的回调是异步的。底层是MutationObserver或setTimeout(fn,200)。

原文地址:https://www.cnblogs.com/wuqilang/p/11370927.html

时间: 2024-08-29 14:55:58

vue中异步请求渲染问题(swiper不轮播)(在开发过程中遇到过什么问题)的相关文章

vue03----生命周期、nextTick()、ref、filter、computed、vue中异步请求渲染问题(swiper不轮播)(在开发过程中遇到什么问题、踩过的坑)

### 1.vue的组件和实例都有生命周期,而且是一样的 生命周期:(组件从创建到销毁的过程) 创建 挂载 更新 销毁 组件到达某一个阶段就会自动触发某一些函数,这个函数就叫生命周期的钩子函数. 创建:组件创建的时候触发 beforeCreate created     组件刚创建的数据请求 挂载:创建完成挂载前后触发 beforeMount mounted     DOM的初始化操作 更新:数据发生改变的时候触发 beforeUpdate updated     数据的变化监听,尽量不要在这里

SpringBoot中异步请求和异步调用(看这一篇就够了)

一.SpringBoot中异步请求的使用 1.异步请求与同步请求 特点: 可以先释放容器分配给请求的线程与相关资源,减轻系统负担,释放了容器所分配线程的请求,其响应将被延后,可以在耗时处理完成(例如长时间的运算)时再对客户端进行响应.一句话:增加了服务器对客户端请求的吞吐量(实际生产上我们用的比较少,如果并发请求量很大的情况下,我们会通过nginx把请求负载到集群服务的各个节点上来分摊请求压力,当然还可以通过消息队列来做请求的缓冲). 2.异步请求的实现 方式一:Servlet方式实现异步请求

vue axios异步请求django

1,配置请求路径 (1),vue中的请求路径要与django视图路径相同. (2),vue中的路由路径也要和django视图路径相同,比如视图路径为127.0.0.1:8000:home/index, vue中的路由路径也要是home/index/路由路径. (3),vue中指定请求方法的的属性名为method不是methods 2,django views.py中被请求的方法必须添加@csrf_exempt,   否则会出现异步错误,返回咋状态码403 此从这导入 from django.vi

AngularJS 中 异步请求$http 对象的使用

 AngularJS 提供了一个类似jquery的$.ajax的对象,用于异步请求. 在AngularJS中对异步操作是推崇至极的,所以$http的操作都是异步的不像jquery.ajax里还提供了async参数. 对于官网的$http对象的总结和使用. 用法: $http(config); 参数: config (常用的参数标红,翻译了一下) config object Object describing the request to be made and how it should b

JavaScrpit中异步请求Ajax实现

在前端页面开发的过程中,经常使用到Ajax请求,异步提交表单数据,或者异步刷新页面. 一般来说,使用Jquery中的$.ajax,$.post,$.getJSON,非常方便,但是有的时候,我们只因为需要ajax功能而引入Jquery比较不划算. 所以接下来便用原生JavaScrpit实现一个简单的Ajax请求,并说明ajax请求中的跨域访问问题,以及多个ajax请求的数据同步问题. JavaScript实现Ajax异步请求 简单的ajax请求实现 Ajax请求的原理是创建一个XMLHttpReq

解决for循环中异步请求顺序不一致的问题

for循环,再把循环出来的ID再进行二次请求 这就导致一个问题 请求结果返回顺序不一致 原因:异步请求会把回调事件放入微任务事件队列,宏任务执行完毕再执行微任务,具体参考事件队列机制 解决方法: 通过map方法进行循环请求 将异步请求方法封装起来,返回一个promise 这样将会返回一个具有多个promise的数组 通过promise.all()方法把promise包装成一个新的promise实例 1 // 通过Promise把所有的异步请求放进事件队列中 2 3 getInfo(item ,i

vue中引入awesomeswiper的方法以及编写轮播组件

1.先安装less-loader npm install less less-loader --save 2.再安装css-loader npm install css-loader --save 3.安装上面两个之后.再安装vue-awesome-swiper(必须在前两个安装过之后安装) npm install vue-awesome-swiper --save 4.安装完之后在package.json文件中查看一下,看是否安装上,如果安装成功,里面会显示对应的版本号 "less"

在angular中使用swiper插件轮播无效的原因

我在angular中使用swiper插件时总会出现轮播不运行. 做项目么,肯定会使用路由实现切换的效果,我在做项目时总喜欢先把内容渲染在主页面上,当所要实现的效果都实现时,然后再把数据拿出来放在子页面上,通俗的讲就是把他放在另一个页面上,通过路由去获取信息. 1.在用路由中实现时一定要在路由里加上控制器controller 1 app.config(function ($routeProvider) { 2 $routeProvider.when('/index', { 3 templateUr

如何使用swiper写轮播

之前大家都写过轮播图吧,相信在写轮播图的过程中也因为当中的某些细节烦恼过吧,接下来我给大家讲述一个方便快捷的轮播图吧! Swiper常用于移动端网站的内容触摸滑动 1.第一步先引入css---swiper.css插件和JQ---swiper.js 插件, 然后呢就开始写轮播图了 <div class="swiper-container">--首先定义一个容器 <div class="swiper-wrapper"> <div class