You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Vue.js中使用Axios渲染EasyDataTable

解决方案:适配EasyDataTable渲染线程监控数据

核心问题梳理

当前代码存在两个关键问题:

  1. Axios返回的是对象格式(键为线程名),但EasyDataTable需要数组格式的items
  2. REQUEST PARAMS对应的params字段嵌套在request对象中,无法直接通过params字段访问

步骤1:修正数据获取与格式转换

先处理Axios响应结果,将对象转为数组,同时适配嵌套字段的访问:

方式一:利用EasyDataTable嵌套属性访问(推荐)

如果你的EasyDataTable版本支持通过.访问嵌套属性,直接修改表头配置并转换数据格式:

<template>
  <EasyDataTable :headers="headers" :items="items" :expandable="true">
    <template #expand="{ item }">
      <div style="padding: 15px">
        <h4>线程详情</h4>
        <p><strong>线程ID:</strong> {{ item['thread-id'] }}</p>
        <p><strong>线程组:</strong> {{ item.group }}</p>
        <p><strong>是否守护线程:</strong> {{ item.daemon ? '是' : '否' }}</p>
        <p><strong>请求路径:</strong> {{ item.request?.path }}</p>
        <p><strong>栈追踪:</strong></p>
        <ul>
          <li v-for="trace in item.stacktrace" :key="trace">{{ trace }}</li>
        </ul>
      </div>
    </template>
  </EasyDataTable>
</template>

<script>
import axios from 'axios';

export default {
  data() {
    return {
      headers: [],
      items: [],
    };
  },
  async created() {
    // 配置表头,用嵌套路径访问request中的params
    this.headers = [
      { text: "THREAD NAME", value: "name" },
      { text: "THREAD STATUS", value: "status" },
      { text: "REQUEST PARAMS", value: "request.params" },
      { text: "HEAP SIZE RETAINED", value: "heap-size-retained" },
    ];
    
    try {
      // 获取数据并转换为数组
      const response = await axios.get('http://localhost:3000/threads');
      this.items = Object.values(response.data);
    } catch (err) {
      console.error('加载线程数据失败:', err);
    }
  },
};
</script>

方式二:手动提取嵌套字段到顶层

如果EasyDataTable不支持嵌套属性,提前将params提取到线程对象顶层:

async created() {
  this.headers = [
    { text: "THREAD NAME", value: "name" },
    { text: "THREAD STATUS", value: "status" },
    { text: "REQUEST PARAMS", value: "params" },
    { text: "HEAP SIZE RETAINED", value: "heap-size-retained" },
  ];
  
  try {
    const response = await axios.get('http://localhost:3000/threads');
    // 转换数据格式并提取params,兼容无请求的线程
    this.items = Object.values(response.data).map(thread => ({
      ...thread,
      params: thread.request?.params || '无请求参数'
    }));
  } catch (err) {
    console.error('加载线程数据失败:', err);
  }
}

步骤2:优化展示细节(可选)

  • 内存大小格式化:将heap-size-retained转为更易读的MB单位:
    this.items = Object.values(response.data).map(thread => ({
      ...thread,
      'heap-size-retained': `${(thread['heap-size-retained'] / 1024 / 1024).toFixed(2)} MB`
    }));
    
  • 状态字段美化:将数字状态(如"5")转为对应文本(如"RUNNING"),可通过自定义列模板实现。

内容的提问来源于stack exchange,提问作者Amit Kushwaha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 06:23:24