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

零基础TypeScript,求基于Hilla View的简易树形网格示例

Hilla View 树形网格(Tree Grid)简单示例

你不用纠结官网的LitElement示例——Hilla的View本身就是基于LitElement封装的,直接在View类里使用TreeGrid组件就行,下面是符合你需求的完整示例:

1. 完整代码实现

import { View } from '@hilla/runtime';
import '@vaadin/tree-grid';
import { html } from 'lit';
import { customElement } from 'lit/decorators.js';

// 定义树形数据的结构
interface GroceryItem {
  name: string;
  type?: string;
  children?: GroceryItem[];
}

@customElement('grocery-view')
export class GroceryView extends View {
  // 模拟的食品分类树形数据
  private groceryData: GroceryItem[] = [
    {
      name: '水果',
      children: [
        { name: '苹果', type: '温带水果' },
        { name: '香蕉', type: '热带水果' },
        { name: '草莓', type: '浆果' }
      ]
    },
    {
      name: '蔬菜',
      children: [
        { name: '西兰花', type: '十字花科' },
        { name: '胡萝卜', type: '根茎类' },
        {
          name: '绿叶菜',
          children: [
            { name: '生菜', type: '叶用莴苣' },
            { name: '菠菜', type: '藜科' }
          ]
        }
      ]
    }
  ];

  render() {
    return html`
      <h2>食品分类树形网格</h2>
      <vaadin-tree-grid .items="${this.groceryData}">
        <!-- 树形列:带展开/折叠按钮,显示名称 -->
        <vaadin-tree-grid-column
          path="name"
          header="名称"
          auto-width
        ></vaadin-tree-grid-column>
        <!-- 普通列:显示类型信息 -->
        <vaadin-grid-column
          path="type"
          header="类型"
          auto-width
        ></vaadin-grid-column>
      </vaadin-tree-grid>
    `;
  }
}

2. 关键说明

  • 必须导入@vaadin/tree-grid组件,Hilla默认不会自动引入这个组件
  • @customElement('grocery-view')是注册自定义元素的必填装饰器,这样你可以在路由配置或者其他页面中引用这个视图
  • TreeGrid默认会识别数据里的children字段作为子节点,如果你的后端数据子节点字段不是children,可以通过itemHasChildren和getChildren属性自定义节点识别逻辑
  • 如果需要从后端获取数据,只需要把groceryData替换成从Hilla Service获取的树形数据即可,比如在connectedCallback生命周期里调用后端接口加载数据

3. 必要依赖检查

如果你的项目里没有安装TreeGrid包,在终端执行:

npm install @vaadin/tree-grid

内容的提问来源于stack exchange,提问作者Melting Turret

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 08:55:31