el-tree 懒加载 loadNode

el-tree 是 Element UI 提供的树形组件,其懒加载功能通过 loadNode 方法实现,可以在用户展开节点时动态加载子节点数据,避免一次性加载大量数据。下面介绍 loadNode 的具体用法和示例。

基本用法

loadNodeel-tree 的一个重要属性,用于定义节点加载的回调函数。当用户展开一个节点时,会触发该回调并传入当前节点的信息,开发者可根据这些信息异步加载子节点数据。

核心参数
  • node:当前点击的节点对象,包含节点的层级、数据等信息。
  • resolve:回调函数,用于将加载的子节点数据传递给树组件。

【完整代码】

html 复制代码
<template>
  <el-tree
    :load="loadNode"
    lazy
    :props="treeProps"
    @node-click="handleNodeClick">
  </el-tree>
</template>

<script>
export default {
  data() {
    return {
      treeProps: {
        label: 'name', // 指定节点标签为数据中的 name 字段
        children: 'children' // 指定子节点为数据中的 children 字段
      }
    };
  },
  methods: {
    // 懒加载回调函数
    loadNode(node, resolve) {
      // 根节点(node.level === 0)通常是初始节点
      if (node.level === 0) {
        // 模拟异步加载根节点数据
        setTimeout(() => {
          const data = [
            { id: 1, name: '节点1', leaf: false },
            { id: 2, name: '节点2', leaf: false }
          ];
          resolve(data); // 将数据传递给树组件
        }, 500);
      } else {
        // 非根节点,根据父节点加载子节点
        setTimeout(() => {
          // 模拟根据父节点ID加载子节点数据
          const childData = [
            { id: `${node.data.id}-1`, name: `子节点1-${node.data.id}`, leaf: true },
            { id: `${node.data.id}-2`, name: `子节点2-${node.data.id}`, leaf: true }
          ];
          resolve(childData);
        }, 500);
      }
    },
    // 节点点击事件处理
    handleNodeClick(data) {
      console.log('点击节点:', data);
    }
  }
};
</script>
相关推荐
我不是外星人6 小时前
一键还原任意网站,这套 Playwright + 多 Agent 工程流太猛了
前端·后端·ai编程
用户059540174466 小时前
AI 客服突然“失忆”,排查 6 小时发现 LangChain 记忆存储的 3 个致命坑
前端·css
IT_陈寒7 小时前
Vue的v-if和v-show,我竟然用错了这么久
前端·人工智能·后端
云絮.7 小时前
计算机相关工作原理
服务器·前端·数据库
随风一样自由7 小时前
【前端+React+缓存竞态】导航切换缓存刷新机制
前端·react.js·缓存
恋猫de小郭7 小时前
Flutter 开发怎么做 Agent ?从工程实战详细给你解读下
android·前端·flutter
IT_陈寒7 小时前
React状态更新延迟搞晕我,原来是闭包在捣鬼
前端·人工智能·后端
晓得迷路了7 小时前
栗子前端技术周刊第 136 期 - pnpr、Flow 重构移植 Rust、Astryx...
前端·javascript·css
柳杉7 小时前
别再手写大屏了!用这套「3D 地图 + 拖拽脚手架」示例源码,交付效率提升 80%
前端·three.js·数据可视化
乌夷7 小时前
Vue.js 3 的设计思路
前端·javascript·vue.js