当前位置:首页 > React

react简单实现树形控件

2026-01-27 16:28:31React

实现树形控件的基本思路

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

react简单实现树形控件

基础代码结构

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

react简单实现树形控件

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.memo避免不必要的重新渲染
  • 数据懒加载,初始只加载顶层节点

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

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

相关文章

vue 简单实现

vue 简单实现

Vue 简单实现 Vue 是一个渐进式 JavaScript 框架,适合快速构建用户界面。以下是实现一个简单 Vue 应用的步骤: 安装 Vue 通过 CDN 引入 Vue 是最简单的方式: &…

实现简单的vue

实现简单的vue

创建Vue项目 使用Vue CLI快速初始化项目,确保已安装Node.js和npm/yarn: npm install -g @vue/cli vue create my-vue-app cd my…

vue 实现简单分页

vue 实现简单分页

Vue 实现简单分页的方法 基础分页组件实现 创建一个基础分页组件,包含页码按钮和翻页功能。以下是一个基于 Vue 3 的示例: <template> <div class="…

vue轮播图简单实现

vue轮播图简单实现

使用 Vue 实现轮播图 以下是一个基于 Vue 3 的简单轮播图实现方法,无需依赖第三方库。 基础结构 在 Vue 单文件组件中,通过 v-for 渲染图片列表,并用 CSS 控制切换效果。 &…

vue实现地区控件

vue实现地区控件

Vue 地区控件实现方法 基于 Element UI 的 Cascader 组件 安装 Element UI 依赖: npm install element-ui 在 Vue 项目中注册组件: i…

vue实现简单登录功能

vue实现简单登录功能

实现登录功能的基本步骤 安装Vue及相关依赖,确保项目环境配置正确。使用Vue CLI创建项目或直接在现有项目中集成Vue。 创建登录表单组件,包含用户名和密码输入框。使用v-model实现双向数据…