nuxt的fetch钩子中发送请求不能在页面加载时把数据渲染到页面上

一、项目技术介绍

项目使用了vue以及nuxt2.js

二、遇到的问题

在nuxt的钩子函数fetch()中发送axios请求,数据无法在进入页面时被渲染到页面上。

附部分源码如下(接口地址删除了)

fetch部分:

async fetch() {
    const res1 = await this.$axios.get("接口1");
    if (res1.data.code == 200) {
      this.skill = this.skill.concat(res1.data.data);
    }
    const res4 = await this.$axios.get("接口2")
      if(res4.data.code == 200) {
        this.total = res4.data.data.records.length;
      }
      this.getData()
  },

getData()方法部分:

getData(){
      // 发送请求
      this.$axios
        .get("接口")
        .then((res) => {
          if (res.data.code == 200) {
          this.caseList.push(...res.data.data.records);
          }
        });
    },

三、解决历程

1.检查同步、异步

fetch()是一个异步函数,是否是getData()方法还没进行完毕?

经过排查测试,多次检查,发现问题并非出在同步、异步的问题上。

2.再次检查代码逻辑

3.重新查看官方文档,尝试增加fetchOnServer: false

增加此配置项,使其在服务器端不执行fetch方法,只有在客户端渲染的时候才会执行。

问题解决,由于接触不深,具体原理还未理解。

写下此篇文章,记录踩坑历史,方便日后自查。

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
nuxt3使用useFetch每次会多发一次发送请求的问题可以通过以下方法解决: 1. 使用缓存:可以使用缓存机制来避免重复发送请求。可以将请求的结果存储在缓存,下次再发送相同的请求,先检查缓存是否存在结果,如果存在,则直接从缓存获取数据,避免重复发送请求。 2. 使用防抖函数:可以使用防抖函数来限制请求的频率。在每次发送请求前,先使用防抖函数对发送请求的函数进行包装,设置一个间间隔,只有当一段间内没有再次触发发送请求的操作,才会发送请求。 3. 使用节流函数:类似于防抖函数,节流函数也可以用来限制请求的频率。不同的是,节流函数在一定间内只会执行一次发送请求的操作,无论触发次数多少,都只会发送一次请求。 综上所述,可以通过使用缓存、防抖函数或节流函数来避免nuxt3使用useFetch每次重复发送请求的问题。具体选择哪种方式取决于实际需求和场景。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [2018web前端面试题总结](https://blog.csdn.net/weixin_30668887/article/details/98767490)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值