当前位置: 首页 > news >正文

arco design框架中的树形表格使用中的缓存问题

目录

1.问题

2.解决方案


1.问题

arco design框架中的树形表格使用中的缓存问题,使用了树形表格的load-more懒加载

点击展开按钮后,点击关闭,再次点击展开按钮时,没有调用查询接口,而是使用了缓存的数据。

2.解决方案

使用load-more懒加载时存在缓存问题,然后增加行点击事件
在行点击事件中,查询当前节点的子节点信息,然后设置child信息,然后再展开当前节点
然后在点击页面的查询处理时,关闭所有节点
这样如果想看到最新的子节点信息,通过行点击事件来进行查看,原来的展开按钮可以用来查看之前的子节点信息
示例代码

追加了行点击事件

<a-table :columns="columns" :data="dataList" :loading="loading" ref="tableRef"
         :bordered="{cell:true}" column-resizable row-key="id"
         :pagination="pagination" @page-change="onPageChange" @page-size-change="onPageSizeChange"
         :scroll="{ x: '100%',y: '100%'}" :scrollbar="true"
         :load-more="loadMore" v-model:expandedKeys="expandedKeys" @row-click="rowClick">
  <template #createDate="{ record }">
    {{ moment(record.createDate).format('YYYY-MM-DD HH:mm:ss') }}
  </template>
  <template #operations="{ record }">
    <a-space :size="10">
      <a-button status='success' @click="viewDetail(record.id, record.fileId, record.fileName)">
        查看详情
      </a-button>
    </a-space>
  </template>
</a-table>

每次查询时,取消所有的展开状态 

const getDataList = async () => {
  loading.value = true;
  try {
    const offset = (pagination.value.current - 1) * pagination.value.pageSize
    const limit = pagination.value.pageSize
    const res = await apiGetArchiveList({
      page: {offset: offset, limit: limit},
      archiveName: form.value.archiveName,
      sourceName: form.value.sourceName,
      level: form.value.level,
      fileId: form.value.fileId,
    });
    res.rows.forEach((item: any) => {
      item.key = item.id;
    })
    dataList.value = res.rows;
    pagination.value.total = res.total;
    tableRef.value.expandAll(false)
    expandedKeys.value = []
  } finally {
    loading.value = false;
  }
}

loadmore正常使用,不使用时不出现展开按钮

const loadMore = async (record: any, done: any) => {
  // 调用接口查询子树信息
  const res = await getChildList(record.id)
  // 显示数据
  record.children = undefined;
  done(res)

}

追加行点击事件,获取子节点信息,并展开节点

const getChildList = async (id: string) => {
  const res = await apiGetChild({id: id})
  res.forEach((item: any) => {
    item.key = item.id;
  })
  return res;
}


const rowClick = async (record: any) => {
  // 调用接口查询子树信息
  const res = await getChildList(record.id)
  record.children = res

  // 展开
  tableRef.value.expand(record.id, true)
}

相关文章:

  • 门户网站域名是什么seol英文啥意思
  • 浏览有关小城镇建设的网站口碑营销案例及分析
  • 自己做公司网站成本重庆 seo
  • 做远程培训网站用什么系统seo网站优化方案摘要
  • 北京西站附近景点网络推广优化平台
  • 如何进入网站后台 被黑怎么给自己的公司建立网站
  • golang接口-interface
  • TCP 协议深度解析
  • Java基础 3.30
  • 小智机器人关键函数解析,Application::InputAudio()处理麦克风音频数据输入的函数
  • 工业级完整实现的 Go TCP 服务端
  • 软考《信息系统运行管理员》- 6.3 信息系统软件的安全运行
  • 并发编程之FutureTask.get()阻塞陷阱:深度解析线程池CPU飚高问题排查与解决方案
  • Vue实现动态路由的后端控制
  • MCP从零开始
  • Java进阶——Lombok的使用
  • WinFrom真入门(1)——Windows窗体应用概念
  • 华为配置篇-BGP实验
  • mac Python多版本第三方库的安装路径
  • 深入剖析 JVM:从组成原理到调优实践
  • pyopenjtalk因cmake版本太高导致pip无法安装
  • PHP泛型与集合的未来:从动态类型到强类型的演进
  • MFC中CMap类的用法和原理
  • 【机器人】复现 GraspNet 端到端抓取点估计 | PyTorch2.3 | CUDA12.1
  • c++的特性——多态
  • 服务热升级的方法