Vue3+swiper5 异步请求数据后轮播图出现无分页器小圆点和无法滑动的问题,如果有默认图片则从最后一张切换到第一张时会展示默认图片

2023-10-29

一、场景描述

异步请求获取到11张图片,页面播图无分页器小圆点和无法正常滑动。
在这里插入图片描述

//package.json:
"devDependencies": {
    "@vue/cli-plugin-babel": "^4.5.13",
    "@vue/cli-plugin-router": "^4.5.13",
    "@vue/cli-plugin-vuex": "^4.5.13",
    "@vue/cli-service": "^4.5.13",
    "@vue/compiler-sfc": "^3.2.6",
    "less": "^3.13.1",
    "less-loader": "^5.0.0",
    "swiper": "^5.3.6",
    "vue-awesome-swiper": "^4.1.1"
  }

二、出现异常问题时的代码

<template>
  <div class="swiper-container">
    <div class="swiper-wrapper">
      <div class="swiper-slide" v-for="(item, index) in imgs" :key="index">
        <img :src="item.pic" />
      </div>
    </div>
    <!-- 如果需要分页器 -->
    <div class="swiper-pagination"></div>
  </div>
</template>

<script>
import "swiper/css/swiper.css";
import Swiper from "swiper";
import axios from "axios";

export default {
  name: "swiperCom",
  data() {
    return {
      imgs: [],
    };
  },
  methods: {
    carouselScroll() {
      var mySwiper = new Swiper(".swiper-container", {
        loop: true, // 循环模式选项

        // 如果需要分页器
        pagination: {
          el: ".swiper-pagination",
          clickable: true,
        },
      });
    },
  },
  async mounted() {
    this.carouselScroll();
    let result = await axios.get("http://localhost:3000/banner?type=1");
    this.imgs = result.data.banners;
    //在异步请求成功后重新初始化轮播图,但不起效果
     this.$nextTick(() => {
      mySwiper.init();
    });
  },
};
</script>


<style lang="less">
.swiper-container {
  width: 7.1rem;
  height: 2.6rem;
  border-radius: 0.1rem;
  .swiper-slide {
    img {
      width: 100%;
    }
  }
}
.swiper-pagination-bullet-active {
  background-color: orangered;
}
</style>

三、更正后的代码

//
 methods: {
    carouselScroll() {
      var mySwiper = new Swiper(".swiper-container", {
        loop: true, // 循环模式选项

        // 如果需要分页器
        pagination: {
          el: ".swiper-pagination",
          clickable: true,
        },
      });
    },
  },
  async mounted() {
    let result = await axios.get("http://localhost:3000/banner?type=1");
    this.imgs = result.data.banners;
    //在异步请求成功后再定义轮播图即可
     this.$nextTick(() => {
      this.carouselScroll();
    });
  },
/*
方法2:使用updated钩子函数,意思跟$nextTick一样,在DOM更新完成后再重新渲染
updated(){
	this.carouselScroll();
}
*/

四、错误代码在有默认图片时,异步请求后会出现分页器小圆点,但是最后一张切换到第一张时会展示默认图片。代码更改后则不再出现了

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Vue3+swiper5 异步请求数据后轮播图出现无分页器小圆点和无法滑动的问题,如果有默认图片则从最后一张切换到第一张时会展示默认图片 的相关文章

  • Javascript拆分正则表达式问题

    你好 我正在尝试我认为在 Javascript 中相当简单的正则表达式 但给我带来了很多麻烦 我希望能够通过 javascript 通过 和 分割日期 var date 02 25 2010 var myregexp2 new RegExp
  • nuxt如何访问javascript文件中的env

    我无法在 nuxt 2 15 之外访问我的环境变量 当我部署时我可以看到 nuxt context config在浏览器中有正确的变量 但在自定义js文件中我无法访问process env baseURL它返回未定义 nuxt config
  • Highcharts 奇怪的分组行为

    我正在使用延迟加载 http www highcharts com stock demo lazy loading加载 OHLC 数据的方法 在服务器端 我使用 Python MySQL 并有 4 个包含 OHLC 数据的表 时间间隔为 5
  • 使用 Mongoose 在 JSLint 中抑制“需要一个标识符,而是看到“默认”(保留字)”

    我在用着jshint验证我的 JavaScript 文件 在服务器端 我使用 Node js 和 Mongoose 在 Mongoose 中 我被鼓励以如下方式编写模式 var UserSchema new mongoose Schema
  • 如何清除画布元素中的多边形区域?

    我使用过clearRect函数 但没有看到多边形的等效函数 我天真地尝试过 ctx fillStyle transparent ctx beginPath ctx moveTo 0 0 ctx lineTo 100 50 ctx lineT
  • 外部 CSS 是否应用于 jsPDF 生成的 pdf

    我已经开始使用 jspdf 制作一些演示 我有一个 html 文件 我的 css 在外部文件中 我写了下面的代码来生成我的pdf pdfButton on click function var pdf new jsPDF p in lett
  • 为什么Google的闭包库不使用真正的私有成员?

    我成为 JavaScript 开发人员已经有一段时间了 我一直认为在 JavaScript 中实现私有成员的正确方法是使用 Doug Crockford 在这里概述的技术 http javascript crockford com priv
  • 用于匹配重复子字符串的单个js正则表达式?

    假设我有一个字符串 例如 where is mummy where is daddy 我想用空字符串替换任何一组重复子字符串 所以在这种情况下where and is元素将被删除 结果字符串将是 mummy daddy 我想知道是否有任何单
  • 使用 ECMA 脚本向节点(页面)添加新属性

    我需要在页面激活时向页面添加属性 我决定建立一个工作流程 在激活步骤之前执行相同的操作 我的自定义工作流程步骤 激活步骤之前的步骤 使用 ECMA 脚本来实现此目的 这是我到目前为止所拥有的 var workflowData granite
  • Javascript 函数,我如何开始理解它们?

    我完全理解 为了学习 javascript 我需要知道函数是如何工作的 我了解传递参数的基础知识 然后使用值调用函数以将某些内容添加到一起 等等 我读过无数关于函数的文章 例如以及书籍等 但我只是不明白它们是如何使用的以及何时应该使用它们等
  • Jasmine 单元测试不等待承诺解析

    我有一个有角度的服务 它具有像这样的异步依赖项 function angular module app factory myService q asyncService function q asyncService var myData
  • 当用户输入/删除时,使文本字段中的提示消失/重新出现[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 有谁知道我怎样才能在我的搜索栏中做出
  • Angular2,测试和解析数据:如何测试 ngOnInit?

    我正在通过Angular2 测试指南 https angular io docs ts latest guide testing html并希望编写一个测试ngOnInit 功能 那个来自编程指南的路由部分 https angular io
  • 新部署后,React 应用程序必须清除浏览器缓存

    我们正在使用 Jenkins 管道在 apache 服务器上部署 React 应用程序 当我们部署新代码时 大多数新功能都可以正常工作 但并非所有更改都反映浏览器中的最新内容 用户必须打开隐身窗口或清除缓存才能看到新功能 我见过一些相关的解
  • 如何优化 Three.js 中多个 sphereGeometry 的渲染?

    我想优化 Three js 中 sphereGeometry 的渲染 因为它成为我的程序的瓶颈 javascript程序如下所示 var sphereThree for var idSphere 0 idSphere lt numSpher
  • 如何让 Grunt.js 和 Meteor.js 协同工作?

    我想在我的 Meteor 应用程序中使用简单的复制和串联 但是当 Meteor 在服务器和客户端上运行所有 javascript 文件时 我遇到了问题 而我不希望它们在任何地方运行 它要么只是配置文件 例如Gruntfile js或我想以某
  • 如何运行 Mike Bostock 的 D3 示例?

    我一直在尝试经营迈克博斯托克透视地球仪 http bl ocks org mbostock 6747043例如 但是如果您尝试在本地重现它 则对其 json 文件的引用是不正确的 问题来自于这行代码 d3 json mbostock raw
  • 通过均匀分布值来有效合并两个数组

    我见过许多问题 答案主题是通过交替值合并两个数组 他们是这样工作的 let array1 a b c d let array2 1 2 let outcome a 1 b 2 c d 但我希望输出更加高效 并且根据数组大小均匀分配值 exp
  • 如何在输入时格式化 contenteditable div?

    我正在尝试编写一个函数 允许 contenteditable div 在用户输入 div 时执行一些自动格式化 到目前为止我只能让它在 IE 中运行 有人可以帮助我吗 function formatOnKeyUp if window get
  • JavaScript 开关(真)

    你好 我正在尝试处理 ajax json 响应 这是我的代码 success function j switch true case j choice1 alert choice2 break case j choice2 alert ch

随机推荐