zoukankan      html  css  js  c++  java
  • vue中异步请求渲染问题(swiper不轮播)(在开发过程中遇到过什么问题、踩过的坑)

    问题描述:

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

    原因:

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

    解决思路:

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

    解决方法:

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

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

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

    在react中map方法遍历必须要加key值

    setState是异步的:

      this.setState()会调用render方法,但并不会立即改变state的值。state是在render方法中赋值的,所以在this.setState()执行后立即获取state值是不变的。直接修改state值并不会触发更新,因为没有触发render函数。

      组件卸载之前,加在dom元素上的监听事件和定时器必须要手动清除,它们不属于react控制范围内。

  • 相关阅读:
    subtext 安装PythonIDE -Anaconda
    Python--DBUtil
    python操作oracle数据库-查询
    Python 离线工作环境搭建
    Scrapy-下载中间件
    centos安装 Anaconda3及使用
    Scrapy爬取人人网
    海明距离
    中心极限定理
    最大似然估计 (MLE)与 最大后验概率(MAP)在机器学习中的应用
  • 原文地址:https://www.cnblogs.com/wuqilang/p/11370927.html
Copyright © 2011-2022 走看看