weixin_41452476 2022-12-01 11:11 采纳率: 42.9%
浏览 67
已结题

vue3为什么请求在这边获取不到数据呢(关键词-select)


import { reactive } from 'vue'
import axios from '@/axios/index'

export default function getclassRoomDatas() {
  interface ItemType {
    // 专用教室数
    count: number | string
    // 区域/学校
    name: number | string
    // 空间利用率
    spaceProportion: number
    // 日均使用率
    useProportion: number
  }

  const SourceClass = reactive<{
    ClassRoom: ItemType[]
  }>({
    ClassRoom: []
  })

  type MyType = number | string
  const getclassRoomData = (
    acadyear: MyType, //学年
    gradeCode: MyType, //年级
    regionCode: MyType, //区域
    schoold: MyType //学校
  ) => {
    axios({
      method: 'get',
      url: '/szxyTeachAffairs/classroom/resource/analysis',
      params: {
        acadyear,
        gradeCode,
        regionCode,
        schoold
      }
    }).then((res) => {
      console.log(res)
      SourceClass.ClassRoom = res.data
      console.log(SourceClass)  // 这个有数据
    })
  }

  return {
    SourceClass,
    getclassRoomData
  }
}

为什么请求在这边获取不到数据呢?

watch(
  () => [selectedAcadyear.value, selectedGrade.value, selectedRegion.value, selectedSchool.value],
  () => {
    if ((selectedAcadyear.value, selectedGrade.value, selectedRegion.value, selectedSchool.value)) {
      getclassRoomData(
        selectedAcadyear.value,
        selectedGrade.value,
        selectedRegion.value,
        selectedSchool.value
      )
    }
    console.log(SourceClass.ClassRoom, 111)  // 获取不到数据
  },
  { immediate: true, deep: true }
)

      <a-table :data-source="dataSource" :columns="SourceClass.ClassRoom" :pagination="false" />

造成表格无法渲染

  • 写回答

2条回答 默认 最新

  • 游一游走一走 2022-12-01 11:20
    关注
    1. 问题原因getclassRoomData是异步的,网络请求比较慢,先执行的console.log
    2. 修改方案
      const getclassRoomData = (
       acadyear: MyType, //学年
       gradeCode: MyType, //年级
       regionCode: MyType, //区域
       schoold: MyType //学校
      ) => {
      return axios({
           method: 'get',
           url: '/szxyTeachAffairs/classroom/resource/analysis',
           params: {
               acadyear,
               gradeCode,
               regionCode,
               schoold
           }
       }).then((res) => {
           console.log(res)
           SourceClass.ClassRoom = res.data
           console.log(SourceClass)  // 这个有数据
       })
      }
      
      () => {
       if ((selectedAcadyear.value, selectedGrade.value, selectedRegion.value, selectedSchool.value)) {
           getclassRoomData(
               selectedAcadyear.value,
               selectedGrade.value,
               selectedRegion.value,
               selectedSchool.value
           ).then(()=>{
               console.log(SourceClass.ClassRoom, 111)
           })
       }
      }
      
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 12月9日
  • 已采纳回答 12月1日
  • 修改了问题 12月1日
  • 创建了问题 12月1日

悬赏问题

  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置