"use client" import { useState } from "react" import { Box, Combobox, Input, ScrollArea, Text, TreeNodeData, useCombobox, } from "@mantine/core" const TreeSelect = ({ treeData }: { treeData: TreeNodeData[] }) => { const combobox = useCombobox() const [value, setValue] = useState("") const renderTreeNodes = (nodes: TreeNodeData[]) => nodes.map((node) => ( {/* 这里的点击事件需要自己处理,例如展开子节点,更新输入框值 */} { setValue(node.label as string) // combobox.closeDropdown() }} style={{ padding: "8px", cursor: "pointer", "&:hover": { backgroundColor: "#f0f0f0" }, }}> {node.label} {node.children && {renderTreeNodes(node.children)}} )) return ( setValue(val)} withinPortal={false}> } onClick={() => combobox.openDropdown()} style={{ width: 250 }}> {value || "请选择..."} {renderTreeNodes(treeData)} ) } export default TreeSelect