首页 > 其他分享 >使用Nuxt框架刷新页面向后端接口请求两次的问题

使用Nuxt框架刷新页面向后端接口请求两次的问题

时间:2024-01-19 18:22:23浏览次数:17  
标签:rs data 接口 getHotCourseTeacher getBanner 刷新 nuxt homePage Nuxt

背景:

当我刷新页面时,发现后端接口被请求了两次

前端使用框架:nuxt、vue、axios等

后端使用框架:springboot、maven、redis、mybatisplus等

主页面程序代码

<script>
import homePage from '@/api/homePage'
export default {
  data () {
    return {
      bannerList:[],//轮播数据
      courseList:[],//课程数据
      teacherList:[]//讲师数据
    }
  },
  created(){
    this.getBanner()
    this.getHotCourseTeacher()
  },
  methods:{
    //获取首页轮播数据
    getBanner(){
      homePage.getBanner()
            .then(rs => {
              this.bannerList = rs.data.data.list
            })
    },
    //获取热门课程讲师
    getHotCourseTeacher(){
      homePage.getHotCourseTeacher()
              .then(rs => {
                this.courseList = rs.data.data.courseList
                this.teacherList = rs.data.data.teacherList
              })
    }
  }
}
</script>

分析:

观察前端程序代码,未发现问题,通过network发现仅请求了一次后端,且由于是第一次使用nuxt框架,所以并没有怀疑是nuxt的问题

所以我怀疑是因为后端的问题:

1、后端程序代码有多次调用?(重新细看了一遍发现并没有)

2、mybatisplus的问题?(我去搜了一下,发现确实有这一类的问题,但是都是什么在test中发生的,处理了半天也没有解决)

3、然后我在接口处 System.out.println("xx"); 刷新页面发现输出了两次xx。那么可以断定是前端请求了两次后端

4、然后我搜索nuxt框架刷新页面发生了两次请求

  1)swipper导致的

  2)链接地址不存在

  3)各种钩子问题

  4)nuxt有服务端和客户端(create函数在服务端和客户端都执行了,所以导致这个问题)

解决:

三种方式

<script>
import homePage from '@/api/homePage'
export default {
  data () {
    return {
      bannerList:[],
      courseList:[],
      teacherList:[]
    }
  },
  created(){
    /* 
    //方式1、解决nuxt重复请求问题(如果是服务端执行时则退出,之后的程序不执行,那么就可以保证剩余的程序在客户端执行)
    if (process.server) return 
    this.getBanner()
    this.getHotCourseTeacher()
    */
  
    //方式2、解决nuxt重复请求问题(当是客户端时,则执行程序)
    if(process.client){
      this.getBanner()
      this.getHotCourseTeacher()
    }
  },
  /* 
  //方式3、解决nuxt重复请求问题(在客户端挂载完成后请求数据,这样就不会在服务端请求)
  mounted(){
    this.getBanner()
    this.getHotCourseTeacher()
  }, 
  */
  methods:{
    //获取首页轮播数据
    getBanner(){
      homePage.getBanner()
            .then(rs => {
              this.bannerList = rs.data.data.list
            })
    },
    //获取热门课程讲师
    getHotCourseTeacher(){
      homePage.getHotCourseTeacher()
              .then(rs => {
                this.courseList = rs.data.data.courseList
                this.teacherList = rs.data.data.teacherList
              })
    }
  }
}
</script>

 

标签:rs,data,接口,getHotCourseTeacher,getBanner,刷新,nuxt,homePage,Nuxt
From: https://www.cnblogs.com/zlshtml/p/17975264

相关文章

  • Nuxt——asyncData/fetch
    asyncData()asyncData方法会在组件(限于页面组件)每次加载之前被调用。它可以在服务端或路由更新之前被调用。在这个方法被调用的时候,第一个参数被设定为当前页面的上下文对象,你可以利用asyncData方法来获取数据,Nuxt.js会将asyncData返回的数据融合组件data方法返回的数据一......
  • nacos 动态刷新 数组对象 List/数组类型、复杂类对象配置
    @Value环境依赖版本SpringCloud是个大前提,不然还是考虑上面方式或者原生接入方案;@NacosPropertySource(dataId="mydata",autoRefreshed=true)同时@RefreshScope方能接收到nacos的push数据。@NacosValue依赖springbootNacos动态刷新基本数据类型很简单,只需要在字段......
  • 安装nuxt3报错:Error: Failed to download template from registry: fetch failed
    问题复现:输入命令安装nuxt3pnpmdlxnuxi@latestinitnuxt-app然后出现下面错误ERRORError:Failedtodownloadtemplatefromregistry:fetchfailed 解决方案:配置hosts,Mac中路径是/etc/hosts,在下面追加一行185.199.108.133raw.githubusercontent.com下......
  • Loadrunner性能、接口测试工具
           LoadRunner,是一种预测系统行为和性能的负载测试工具。通过模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner能够对整个企业架构进行测试。企业使用LoadRunner能最大限度地缩短测试时间,优化性能和加速应用系统的发布周期。   Lo......
  • stable Diffusion java接口
    StableDiffusionJava接口介绍引言在现代计算机科学中,信息传播或数据扩散是一个重要的概念。它可以用来模拟和分析各种现象,如社交网络中的信息传播、病毒传播以及多个实体之间的通信等。稳定扩散是一种特殊类型的信息传播,它指的是在一段时间内,信息传播的速度和传播范围达到了一......
  • Nuxt2——路由
    Nuxt内置了路由模块,无需自行编写路由文件Nuxt会根据pages/自行配置路由文件基础路由pages/--|user/-----|index.vue-----|one.vue--|index.vue得到路由配置router:{routes:[{name:'index',path:'/',component:'pages/index.vue'......
  • 抽象类和接口
    抽象类必须用关键字abstract;抽象类可以包含抽象方法和具体方法,抽象方法可有可无;抽象类可以有实例变量(字段)抽象类不能用来创建对象;(所有的对象都是通过类来描述的,但并不是所有的类都是用来描述对象的)子类必须实现父类的抽象方法,否则子类也定义为abstract类接口接......
  • 若依页面刷新 $tabs.refreshPage()
    前言若依封装了$tab对象,其中有个刷新页签的方法。看了下refreshPage()的源码,发现是用router.replace()替换当前位置的。但是当前路由地址前加了/redirect前缀,不知这个有什么作用。查看相关源码,发现:如果不加该前缀,控制台会报错如下:定义了/redirect/:path(.*)公共......
  • .NET Core如何调SAP接口-.NET Core如何调WebService接口
     情况说明 客户提供一个SAP接口,接口通过浏览器可以打开查看,如下图: 输入帐号密码后登录: 接口开发连接接口服务上述情况,SAP接口已就绪,现在开始开发接口调用。首先,创建.NETCoreWeb项目,然后如下图,连接接口服务。           创......
  • Nuxt2——构建文件
    nuxt2构建文件放在nuxt.config.js,使用cjs语法,暴露配置对象基本配置项mode 有spa和universal两种模式。spa没有使用到服务器渲染,但是使用路由。universal使用服务器渲染加客户端路由mode:'universal'head配置html的<head></head>内容head:{titleTemplate:'%s-Nuxt......