当前位置:首页 > React

react简单实现树形控件

2026-01-27 16:28:31React

实现树形控件的基本思路

树形控件的核心是递归渲染节点,每个节点可以包含子节点。通过状态管理展开/折叠状态,动态渲染可见部分。

基础代码结构

创建一个可复用的树形组件,包含以下关键部分:

import React, { useState } from 'react';

const TreeNode = ({ node }) => {
  const [isExpanded, setIsExpanded] = useState(false);

  const hasChildren = node.children && node.children.length > 0;

  return (
    <li>
      <div onClick={() => setIsExpanded(!isExpanded)}>
        {hasChildren && (
          <span>{isExpanded ? '▼' : '▶'}</span>
        )}
        {node.name}
      </div>

      {hasChildren && isExpanded && (
        <ul>
          {node.children.map(child => (
            <TreeNode key={child.id} node={child} />
          ))}
        </ul>
      )}
    </li>
  );
};

const Tree = ({ data }) => {
  return (
    <ul>
      {data.map(node => (
        <TreeNode key={node.id} node={node} />
      ))}
    </ul>
  );
};

使用示例

const treeData = [
  {
    id: 1,
    name: 'Parent 1',
    children: [
      {
        id: 2,
        name: 'Child 1',
        children: [
          { id: 3, name: 'Grandchild 1' },
          { id: 4, name: 'Grandchild 2' }
        ]
      },
      { id: 5, name: 'Child 2' }
    ]
  },
  {
    id: 6,
    name: 'Parent 2'
  }
];

function App() {
  return (
    <div>
      <h1>Tree Component</h1>
      <Tree data={treeData} />
    </div>
  );
}

样式增强

添加基础CSS样式提升视觉效果:

ul {
  list-style: none;
  padding-left: 20px;
}

li {
  margin: 5px 0;
}

div {
  cursor: pointer;
  padding: 2px 5px;
}

div:hover {
  background-color: #f0f0f0;
}

功能扩展方向

  1. 复选框支持:为每个节点添加复选框,实现全选/取消功能
  2. 搜索过滤:根据输入内容动态过滤显示匹配节点
  3. 拖拽排序:实现节点拖拽重新排序功能
  4. 异步加载:节点展开时动态加载子节点数据
  5. 自定义图标:替换默认箭头为更美观的图标

性能优化建议

对于大型树结构,考虑以下优化:

react简单实现树形控件

  • 虚拟滚动技术,只渲染可见区域节点
  • 使用React.memo避免不必要的重新渲染
  • 数据懒加载,初始只加载顶层节点

这种实现方式提供了树形控件的基础功能,可以根据具体需求进行扩展和定制。

标签: 控件简单
分享给朋友:

相关文章

vue 实现简单登陆

vue 实现简单登陆

Vue 实现简单登录功能 创建 Vue 项目 使用 Vue CLI 创建一个新项目: vue create login-demo 选择默认配置或手动配置(推荐包含 Vue Router 和 Vuex…

jquery 控件

jquery 控件

jQuery 控件概述 jQuery 控件是基于 jQuery 库开发的交互式 UI 组件,用于增强网页功能。这些控件通常提供表单元素、数据展示、导航等功能,简化开发流程。 常用 jQuery 控件…

vue 实现简单表格

vue 实现简单表格

以下是在 Vue 中实现简单表格的几种方法: 使用原生表格标签 通过 Vue 的数据绑定功能渲染表格数据: <template> <table> <the…

vue简单实现picker效果

vue简单实现picker效果

Vue 实现 Picker 效果 在 Vue 中实现 Picker 效果可以通过自定义组件或使用第三方库完成。以下是两种常见方法: 自定义滚动选择器 使用原生滚动行为实现 Picker 效果,适用于…

vue简单的列表实现

vue简单的列表实现

实现简单的 Vue 列表 在 Vue 中实现列表功能通常使用 v-for 指令。以下是一个基础的列表实现示例: <template> <div> <ul&g…

简单的vue实现原理

简单的vue实现原理

Vue 的实现原理 Vue 的核心实现原理主要包括响应式系统、虚拟 DOM 和模板编译。以下是这些核心概念的简要说明: 响应式系统 Vue 通过 Object.defineProperty(Vue…